我试图选择,在视图中确实出现方法,以编程方式表格单元格。
NSIndexPath *indexPath = [NSIndexPath indexPathForRow:1 inSection:1];
[self.tableView selectRowAtIndexPath:indexPath animated:NO scrollPosition:UITableViewScrollPositionNone];
我的代表,
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
没有被调用。
如果我用鼠标选择模拟器中的单元格,则会调用委托,但是,不是以编程方式。
为什么会这样?
答案 0 :(得分:3)
因为这就是框架的工作原理。尝试阅读文档。这就是他们的意思!
selectRowAtIndexPath:animated:scrollPosition:
选择接收器中由索引路径标识的行,可选择将行滚动到接收器中的某个位置...调用此方法不会导致委托接收
tableView:willSelectRowAtIndexPath:
或tableView:didSelectRowAtIndexPath:
消息。
这很容易理解。如果在代码中选择行(以编程方式),则不会调用委托方法didSelectRowAtIndexPath:
。仅当用户选择行时才会调用它。
这很有道理,因为:
如果您在代码中选择行,则可能不希望触发委托方法。
如果你做希望触发委托方法,因为你在自己的代码中,你可以调用它。
你不需要委托方法来学习选择了行,因为你在代码中选择了它 - 你不能不知道!