以编程方式选择行时未触发didSelectRowAtIndexPath事件

时间:2012-01-02 22:05:51

标签: objective-c cocoa-touch uitableview

我想在tableView中选择一个单元格。它使用此代码正常工作,但一旦以编程方式选择,它就不会触发didSelectRowAtIndexPath事件。我怎么能触发它?

NSIndexPath *indexPath = [NSIndexPath indexPathForRow:0 inSection:0];
[self.mainTable selectRowAtIndexPath:indexPath animated:NO scrollPosition:UITableViewScrollPositionNone];

1 个答案:

答案 0 :(得分:27)

它的工作原理如下:

  

调用此方法不会导致代理收到tableView:willSelectRowAtIndexPath:tableView:didSelectRowAtIndexPath:消息,也不会向观察者发送UITableViewSelectionDidChangeNotification通知。

选择您的手机后自行调用:

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

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