故事板NSIndexPath

时间:2012-11-01 07:05:56

标签: ios storyboard tableview segue nsindexpath

我尝试使用带有表格视图的故事板,该视图会显示到应该向我显示图片的控制器视图。问题是,当我按下任何“单元格”时,应用程序会崩溃。

这是问题代码:

- (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行]。 我该如何解决这个问题?

1 个答案:

答案 0 :(得分:6)

阅读文档here您调用的方法,而不是假设他们做了什么......

[[self tableView] indexPathsForSelectedRows]

返回NSArray一个NSIndexPath(顺便说一句,你可以知道这个,即使没有阅读文档 - 在Cocoa命名中约定,如果某些东西是复数形式,那么它接受或返回NSArray),因此向它发送NSIndexPath的消息将会崩溃。写

NSIndexPath *path = [[[self tableView] indexPathsForSelectedRows] objectAtIndex:0];

相反,它将起作用(如果至少有一个选定的行 - 如果没有,你必须检查数组是否为空,否则它将再次崩溃......)

顺便说一句,编译器甚至会警告你这个问题是什么......在尝试编程之前,请尝试开发一些常识,因为如果没有,你会拍摄自己和其他人在脚下。