2009-05-13 2 views
0

Я показываю UITableView, и время от времени первая строка появляется в нижней части представления.Смещение при отображении UITableView

Нет ничего выше первой строки, и пустое пространство нечувствительно.

До сих пор я проверил:

  • headerView из Tableview: пусто
  • используют простые UITableViewCells
  • Проверка RowHeight клеток
  • проверка кадр из клеток
  • , когда ошибка происходит, предупреждение памяти отсутствует до
  • проверить содержимоеОфисный вид таблицы прокрутки

Эта ошибка появляется только на iPhone, никогда на симуляторе.

На скриншоте слева отображается правильный вид таблицы, а справа вид с ошибкой. Когда вы делаете снимок, я коснулся экрана, чтобы полоса прокрутки была видна.

Любая идея в каком направлении я должен смотреть?

Я только что видел contentSize таблицыView scrollView не прав: у меня 84 ячейки @ 67 пикселей и 1 ячейка @ 57 пикселей высота: общая сумма должна быть 5685, но равна 6005. (выкл. 320). Странный.

Stephan

alt text http://www.quicksnapper.com/files/5161/18374733084A0B3EA24D152.png

+0

Вы проверили все, что я проверил бы, и, похоже, вы не используете разделы.Я бы снова проверял разделы и если вы подклассифицируете UITableViewCell, я бы снова проверил этот код. – Jordan

ответ

0

Так что я нашел решение моей проблемы:

Добавление NSLog (@ ""). Это странно.

В моей viewWillAppear, я

if (searchByCuisinier || searchByResto) { 
    NSLog(@"Will set tableHeaderView"); 
    self.tableView.tableHeaderView = searchBar; 
    if (searchByCuisinier) { 
     searchBar.placeholder = @"Cuisinier"; 
    } else { 
     searchBar.placeholder = @"Restaurant"; 
    } 
    searchBar.autocapitalizationType = UITextAutocapitalizationTypeNone; 
    searchBar.autocorrectionType = UITextAutocorrectionTypeNo; 
    if ([filteredList count] == 0) 
     [searchBar becomeFirstResponder]; 
    } else { 
    self.tableView.tableHeaderView = nil; 
    NSLog(@""); // Magic! 
    } 

Добавление NSLog (@ "") решает эту ошибку.

реверсирования Также тест: Вместо

if (searchByCuisinier || searchByResto) { 
.... 

я:

if (!searchByCuisinier && !searchByResto) { 
.... 

Я абсолютно не знаю, почему это работает (или почему он не работает без NSLog).

1

Вы можете переопределить метод touchesBegan в UITableView затем запустить тест удар.

Затем спросите, какой вид вернул класс.

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{ 

CGPoint location = [[touches anyObject] locationInView:self]; 

UIView *whatIsThis = [self hitTest:locationInView withEvent:event]; 

NSLog([[whatIsThis class] description]); 


} 

По крайней мере, у вас будет отправная точка. Вы также можете спросить, кто его супервизор.

+0

Это UITableView, а его супервизор - вид. –

+0

Теперь вы знаете, что это не ячейка, и это не заголовок заголовка таблицы или раздела. Я не уверен, что это те ответы, которые вы хотели, но можете позволить вам отследить ошибку –

Смежные вопросы