使用selectRowAtIndexPath在UITableView中手动选择行

时间:2015-10-27 21:24:00

标签: ios objective-c uitableview cocoa-touch

所以我试图使用selectRowAtIndexPath预先选择表中的一行。

我的问题是,调用selectRowAtIndexPath的最佳位置在哪里?

我想要调用它的唯一地方是在cellForRowAtIndexPath中:...因为我有indexPath,但这似乎不起作用。

我感谢任何答案或建议。

谢谢!

2 个答案:

答案 0 :(得分:0)

为什么不手动选择单元格而不是调用委托方法?

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

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"MyCell" forIndexPath:indexPath];
    //...
    if( /* some condition */ ) {
        cell.selected = YES;
    }
    //...
    return cell;
}

答案 1 :(得分:0)

方法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 更好。