3

我正在尝试使用 selectRowAtIndexPath 强制选择(突出显示) UITableViewCell ..

例如,假设我希望始终突出显示表格视图中的第一个单元格,我在 viewDidAppear 中应用以下逻辑

[self.tableViewPrompts selectRowAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:0] animated:NO scrollPosition:0];

工作得很好。但是当我尝试在应用程序的其他地方应用相同的逻辑时,单元格没有被选中。我什至尝试在调用上述方法之前取消选择其他单元格,并在调用此方法之前和之后重新加载 tableview,但这些方法似乎都不起作用!

我什至使用 tableview 的委托强行调用 didSelectRowAtIndexPath.Event 这不起作用。

PS:单元格的选择不会触发任何我想要实现的操作只是突出显示所需的单元格。

我在这里做错了什么?

非常感谢您的帮助!

4

3 回答 3

5

单元格的选择不会触发任何我想要实现的操作只是突出显示所需的单元格。

为什么不使用单元格的突出显示属性?

UITableViewCell *cell = [self cellForRowAtIndexPath: [NSIndexPath indexPathForRow: 0 inSection: 0]];
cell.highlighted = YES;

现在无法测试它,但它应该工作......

编辑

当然,更好的是:改变你的 cellForRowAtIndexPath 来做到这一点

-(UITableViewCell) tableView:cellForRowAtIndexPath:
//...
if (indexPath.row == 0 && indexPath.section == 0) cell.highlighted = YES
else cell.highlighted = NO;
//...
return cell;
于 2012-12-28T19:55:29.273 回答
3

我很困惑为什么这对你的情况不起作用。这是我在视图控制器内的几个地方使用的方法,包括viewDidAppear我认为与您正在做的事情没有真正的区别:

- (void)selectRow1
{
    NSIndexPath* idx = [NSIndexPath indexPathForRow:1 inSection:0];
    [_table selectRowAtIndexPath:idx animated:NO scrollPosition:UITableViewScrollPositionMiddle];
    [self tableView:_table didSelectRowAtIndexPath:idx];
}

_table是我的表属性变量,并且调用didSelectRowAtIndexPath了 ,因此可能会发生选择操作,但与您的代码唯一真正的区别是 scrollPosition 参数。

于 2012-12-28T19:53:12.127 回答
0

只需使用 setSelected 突出显示单元格:

  [cell setSelected:YES];

我已经为整个目的创建了这个扩展UITableView-Ext

于 2015-06-02T06:39:35.833 回答