我尝试使用带有表格视图的故事板,该视图会显示到应该向我显示图片的控制器视图。问题是,当我按下任何“单元格”时,应用程序会崩溃。
这是问题代码:
- (void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{
if([[segue identifier] isEqualToString:@"ShowPhoto"])
{
DetailsViewController *dvc = [segue
destinationViewController];
NSIndexPath *path = [[self tableView] indexPathsForSelectedRows];
Photo *pic = [photosArray objectAtIndex:[path row]];
[dvc setCureentPic: pic];
}
}
问题是NSIndexPath的行...我认为原因是我尝试将数组插入NSIndex。 xcode警告:使用类型为“NSArray”的表达式初始化“NSIndexPath * __ strong”的指针类型不兼容。
crush消息:无法识别的选择器发送到实例[__NSArrayI行]。 我该如何解决这个问题?
答案 0 :(得分:6)
请阅读文档(here)您调用的方法,而不是假设他们做了什么......
[[self tableView] indexPathsForSelectedRows]
返回NSArray
而不一个NSIndexPath
(顺便说一句,你可以知道这个,即使没有阅读文档 - 在Cocoa命名中约定,如果某些东西是复数形式,那么它接受或返回NSArray
),因此向它发送NSIndexPath
的消息将会崩溃。写
NSIndexPath *path = [[[self tableView] indexPathsForSelectedRows] objectAtIndex:0];
相反,它将起作用(如果至少有一个选定的行 - 如果没有,你必须检查数组是否为空,否则它将再次崩溃......)
顺便说一句,编译器甚至会警告你这个问题是什么......在尝试编程之前,请尝试开发一些常识,因为如果没有,你会拍摄自己和其他人在脚下。