所以我试图使用selectRowAtIndexPath预先选择表中的一行。
我的问题是,调用selectRowAtIndexPath的最佳位置在哪里?
我想要调用它的唯一地方是在cellForRowAtIndexPath中:...因为我有indexPath,但这似乎不起作用。
我感谢任何答案或建议。
谢谢!
答案 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 更好。