iPhone didSelectRowAtIndexPath没有开火

时间:2010-11-02 18:15:45

标签: iphone objective-c xcode ipad ios

所以我试图默认在我的视图第一次加载时选择tableView中的第一行。我正在做这个我的viewWillAppear方法:

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

[theTable.delegate tableView:theTable didSelectRowAtIndexPath:tempPath];

激活方法,但单元格不会保持选中状态。这会触发正确的方法并在那里执行代码,我永远不会取消选择它。用户按下另一个单元格后,它会保持正确选择状态。不是第一次。有谁知道可能导致这种奇怪的原因?我甚至试图这样做:

[[theTable.delegate tableView:theTable cellForRowAtIndexPath:tempPath] setSelected:YES];

思想?

2 个答案:

答案 0 :(得分:3)

首先,你不应该直接调用委托方法。

如果确实需要以编程方式选择单元格(如Mail应用程序那样),请使用selectRowAtIndexPath方法:

[theTable selectRowAtIndexPath:tempPath animated:YES scrollPosition:UITableViewScrollPositionBottom];

答案 1 :(得分:1)

根据HIG,您不应该将表格视图单元格保留为选定状态。一旦您执行点击所需的任何操作,我们鼓励(强烈)取消选择该行。

对于持久性选择,您应该使用附件,并且可以将单元格的附件设置为选中标记以指示“已选择”