所以我想到StackOverflow上关于这个主题的所有问题,我不需要问这个问题。好吧,没有一个答案对我有用。
基本上,我试图在用户按下按钮时手动调用-didSelectRowAtIndexPath:
:
NSIndexPath *indexPath = [NSIndexPath indexPathForRow:0 inSection:0];
[self tableView:[viewControllers objectAtIndex:1] didSelectRowAtIndexPath:indexPath];
其中viewControllers
是UITableView
的数组,已完全初始化并且包含所有内容。
但是当我运行代码时,我在这里得到错误:
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
currentUnit = [tableView cellForRowAtIndexPath:indexPath]; //on this line
[self prepareSecondPageController: [currentUnit.textLabel text]];
[unit2 setText:[NSString stringWithFormat:@"Unit Two: %@", currentCompatCategory]];
}
,控制台显示:
- [UITableViewController cellForRowAtIndexPath:]:无法识别的选择器发送到实例0xc177640
(0xc177640是tableView
)
我不知道这是否会有所帮助,但这是我在indexPath
调试器中的样子:
答案 0 :(得分:1)
您将错误的参数传递给didSelectRowAtIndexPath方法。第一个参数必须是视图控制器的表视图而不是TableViewControllers数组(根据您的异常信息,您的数组似乎不是表视图数组)。
[self tableView:self.tableView didSelectRowAtIndexPath:indexPath];
答案 1 :(得分:1)
您正在传递Controller而不是tableView。也许这就是应用程序崩溃的原因。
NSIndexPath *indexPath = [NSIndexPath indexPathForRow:0 inSection:0];
// Assuming viewControllers is the collection of UITableViewControllers.
UITableView *tableView = (UITableView *)[viewControllers objectAtIndex:1].tableView;
[self tableView:tableView didSelectRowAtIndexPath:indexPath];
答案 2 :(得分:0)
看起来在数组中有TableViewController而不是Table Views。这导致了错误,因为TVC没有方法cellForRowAtIndexPath:
。