当以编程方式进行选择时,TableView不会生成didSelectRowAtIndexPath事件吗?

时间:2011-08-18 17:59:36

标签: iphone ios uitableview

我使用以下代码以编程方式选择tableview单元格

- (void) selectTableCell{
NSIndexPath *ip = [NSIndexPath indexPathForRow:0 inSection:0];
[tableView selectRowAtIndexPath:ip animated:YES scrollPosition:UITableViewScrollPositionBottom];

NSIndexPath *ip1 = [NSIndexPath indexPathForRow:1 inSection:0];
[tableView selectRowAtIndexPath:ip1 animated:YES scrollPosition:UITableViewScrollPositionBottom];}

出于测试目的,我想这样做。如何生成didselect事件?

谢谢, Lalith

2 个答案:

答案 0 :(得分:6)

文档明确告诉您会发生什么:

  

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

您可以尝试自己调用这些方法,但不保证会复制原始功能。

要测试您的UI,您应该尽可能使用基于仪器的UI自动化测试。

答案 1 :(得分:5)

我想这应该有效:

if ([tableView.delegate respondsToSelector:@selector(tableView:didSelectRowAtIndexPath:)]) {
    [tableView.delegate tableView:tableView didSelectRowAtIndexPath:ip];
}