Поэтому я пытаюсь предварительно выбрать строку в таблице с помощью selectRowAtIndexPath.

Мой вопрос: где лучше всего вызывать selectRowAtIndexPath?

Единственное место, где я думал вызвать это, было в cellForRowAtIndexPath: ... потому что у меня был indexPath, но это не сработало.

Буду признателен за любые ответы или предложения.

Благодарность!

0
Water4Fun 28 Окт 2015 в 00:24

2 ответа

Лучший ответ

Подход 1 :

Чтобы ячейка отображалась выбранной, вы должны вызвать -setSelected:animated: из -tableView:willDisplayCell:forRowAtIndexPath: следующим образом:

- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath
{
    if (/* Condition */) {
        [cell setSelected:YES animated:NO];
    }
}

Подход 2 :

- (void)viewDidAppear:(BOOL)animated {
    NSIndexPath *indexPath=[NSIndexPath indexPathForRow:0 inSection:0];
    [myTableView selectRowAtIndexPath:indexPath animated:YES  scrollPosition:UITableViewScrollPositionNone];
}

Если вы хотите, чтобы эта конкретная строка выбиралась каждый раз , тогда лучше Подход 1 , иначе, если вы просто хотите, чтобы она была выбрана изначально , тогда Подход 2 лучше.

0
Piyush Sharma 27 Окт 2015 в 22:18

Почему бы просто не установить выбранную ячейку вручную вместо вызова метода делегата?

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"MyCell" forIndexPath:indexPath];
    //...
    if( /* some condition */ ) {
        cell.selected = YES;
    }
    //...
    return cell;
}
0
72A12F4E 27 Окт 2015 в 21:29