2015-02-25 2 views
0

У меня есть UITableView в качестве подвид представления. В ViewController, когда заполняется таблица, я выделяю одну из строк и сохраняю запись indexPath для этой строки. Я делаю это в методе cellforRowAtIndexPath.UITableView ScrollToRowAtIndexPath метод не работает

-(UITableViewCell *) tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{ 
favouriteCellView *cell = [tableView dequeueReusableCellWithIdentifier:@"reuseID"]; 

QBCOCustomObject *favouriteObject = [_favouriteResults objectAtIndex:indexPath.row]; 

if (favouriteObject.userID == self.user.ID) { 
    UIView *bgColor = [[UIView alloc] init]; 
    bgColor.backgroundColor = [UIColor colorWithRed:173.0f/255.0f green:146.0f/255.0f blue:237.0f/255.0f alpha:.5]; 
    self.highlightedRowIndex = indexPath; 
    [cell setSelectedBackgroundView:bgColor]; 
    [tableView selectRowAtIndexPath:indexPath animated:NO scrollPosition:UITableViewScrollPositionMiddle]; 
} 
return cell; 

}

Тогда в методе viewDidAppear я хочу таблицу для перехода к выделенной ячейке.

-(void)viewDidAppear:(BOOL)animated{ 
    [self.tableView scrollToRowAtIndexPath:self.highlightedRowIndex atScrollPosition:UITableViewScrollPositionTop animated:YES];  
} 

Однако я проверил, что метод удара с точки останова, но, к сожалению, выделенная строка не прокручивается в верхней части таблицы, как я ожидал. AM Я неправильно понимаю метод scrollToRowAtIndexPath? Или я оставил что-то из вышеуказанного кода.

ответ

1

Если строка не находится на экране, она еще не будет загружена табличным представлением. Это означает, что ваш cellForRowAtIndexPath для этой ячейки еще не будет вызван. Вы захотите выбрать этот индекс таким образом, чтобы он не зависел от загрузки вида. Попробуйте это, прежде чем позвонить scrollToRowAtIndexPath:

NSInteger row = 0; 
for (QBCOCustomObject *object in _favouriteResults) { 
    if (object.userID == self.user.ID) break; 
    row++; 
} 
self.highlightedRowIndex = [NSIndexPath indexPathForRow:row inSection:0]; 
+0

Это прекрасно работает и хорошо объяснено. Спасибо! –

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