无法以编程方式选择UITableViewCell

时间:2013-05-12 04:04:38

标签: ios objective-c uitableview selection

我试图选择,在视图中确实出现方法,以编程方式表格单元格。

NSIndexPath *indexPath = [NSIndexPath indexPathForRow:1 inSection:1];

[self.tableView selectRowAtIndexPath:indexPath animated:NO scrollPosition:UITableViewScrollPositionNone];

我的代表,

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {

没有被调用。

如果我用鼠标选择模拟器中的单元格,则会调用委托,但是,不是以编程方式。

为什么会这样?

1 个答案:

答案 0 :(得分:3)

因为这就是框架的工作原理。尝试阅读文档。这就是他们的意思!

  

selectRowAtIndexPath:animated:scrollPosition:

     

选择接收器中由索引路径标识的行,可选择将行滚动到接收器中的某个位置...调用此方法不会导致委托接收tableView:willSelectRowAtIndexPath:tableView:didSelectRowAtIndexPath:消息。

这很容易理解。如果在代码中选择行(以编程方式),则不会调用委托方法didSelectRowAtIndexPath:。仅当用户选择行时才会调用它。

这很有道理,因为:

  • 如果您在代码中选择行,则可能不希望触发委托方法。

  • 如果你希望触发委托方法,因为你在自己的代码中,你可以调用它。

  • 你不需要委托方法来学习选择了行,因为在代码中选择了它 - 你不能知道!