我目前面临的问题是,如果我在桌面视图中选择一行并返回并按下" +"导航栏中的按钮,我的应用程序将崩溃。我怀疑这可能是因为我选择了" show modally" xcode中的选项。无论如何,我可能完全不在,但这是我的代码。请耐心等待,因为我只选择了编码
-(void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
NSIndexPath *path = [self.tableView indexPathForSelectedRow];
displayViewController *vc;
vc = [segue destinationViewController];
if (path != NULL) {
vc.pID = path.row;
}
}
这是我的prepareForSegue函数,当我尝试将vc.pID设置为path.row时发生错误,因为如果我点击" +"按钮,它没有一行。如果按下" +"有没有办法不进入prepareForSegue功能?按钮?
感谢您的帮助!
答案 0 :(得分:1)
您要做的是将segue标识符的测试添加到prepareForSegue中。
segue属性具有标识符值。
if segue.identifier == "nameOfSegueIdentifier" { // do stuff here }
这样您就可以根据UI的哪个方面触发segue来运行特定代码。
修改强>
抱歉,现在只看到你正在使用目标C.我的代码在Swift中。不确定如何在目标C中实现它,但概念将是相同的。
答案 1 :(得分:1)
在objective-c中准备segue的形式是......
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
if ([segue.identifier isEqualToString:@"someIdentifierA"]) {
// get the table view selection, for example
NSIndexPath *path = [self.tableView indexPathForSelectedRow];
// get some part of my datasource (model), for example
MyModelObject *modelObject = self.datasourceArray[indexPath.row];
// initialize part of the model on the destination vc
MyOtherViewController *destination = (MyOtherViewController *)segue.destinationViewController;
destination.modelObject = modelObject;
} else if ([segue.identifier isEqualToString:@"someIdentifierB"]) {
// same idea here, but different segue to different destination
NSIndexPath *path = [self.tableView indexPathForSelectedRow];
displayViewController *vc = (displayViewController *)[segue destinationViewController];
vc.pID = path.row;
} else if // and so on
}
}