未声明的标识符“indexPath”
我将尝试使用赛格瑞方法二控制器之间传递数据的使用,但它给我的错误,如未声明的标识符“indexPath”
未声明的标识符“indexPath”
检查我的代码的使用:
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
if ([segue.identifier isEqualToString:@"showRecipeDetail"]) {
NSIndexPath *index = (NSIndexPath *)sender;
NameViewController *destViewController = [segue destinationViewController];
destViewController.receiptName = [self.nameListArray objectAtIndex:indexPath.row]; // here display the error.
}
}
根据抛出的异常,sender
显然是表视图单元而不是索引路径。 ?
然后,你必须写
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
if ([segue.identifier isEqualToString:@"showRecipeDetail"]) {
NSIndexPath *indexPath = [self.tableView indexPathForCell: (UITableViewCell*)sender];
NameViewController *destViewController = [segue destinationViewController];
destViewController.receiptName = self.nameListArray[indexPath.row];
}
}
它正常工作。谢谢。 –
重命名的变量名称如下,
NSIndexPath *indexPath = (NSIndexPath *)sender;
代替
NSIndexPath *index = (NSIndexPath *)sender;
这就解决了未声明的标识符问题。
现在来到你的第二组的问题, 正如你在你不使用didSelect按你所提到的指导我们的谈话中提到,请read the documentation little in depth,因为他们都提到使用indexPathForSelectedRow为
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
if ([segue.identifier isEqualToString:@"showRecipeDetail"]) {
NSIndexPath *indexPath = [self.tableView indexPathForSelectedRow];
NameViewController *destViewController = [segue destinationViewController];
destViewController.receiptName = self.nameListArray[indexPath.row];
}
}
供参考:@vadian答案也是实现这一目标的好方法。
更改应用程序后将崩溃并显示如下错误:终止应用程序由于未捕获的异常'NSInvalidArgumentException',原因:' - [UITableViewCell行]:无法识别的选择器发送到实例0x7f861307 –
一个问题,prepareForSegue如何调用是通过使用“用tableView didSelect在indexPath处执行带标识符的搜索“或者你在故事板中以某种方式使用segue? – Bharath
为什么不打电话?我没有更多关于segue的细节,因为我在几天之前开始学习ios。 –
这里..
destViewController.receiptName = [self.nameListArray objectAtIndex:indexPath.row]; // here display the error.
您正在使用indexpath
并且声明index
,所以你需要改变变量名称就像...
NSIndexPath *indexPath = (NSIndexPath *)sender;
,然后用它作为
destViewController.receiptName = [self.nameListArray objectAtIndex:indexPath.row];
请确保sender
是一种NSIndexPath
或不。
更改应用程序后将崩溃并显示如下错误:终止应用程序由于未捕获的异常'NSInvalidArgumentException',原因:' - [UITableViewCell row]:无法识别的选择器发送到实例0x7f861307 –
请参阅编辑的答案。 –
分享你如何调用performSegue withIdentifier .. – Bharath
你明白我的问题代码@Bharath –
我只需拨打[self.nameListArray objectAtIndex:指数]所以它正常工作,但总是在下一个控制器上返回相同的值 –