尝试设置从UITableView
中的4个不同单元格触发的4个不同的segue,以便在我的应用程序中切换到不同的视图控制器。我的主菜单嵌入在导航控制器中。我通过控制从主菜单视图控制器拖动到我的4个不同的视图控制器来设置segue。然后在didSelectRowAtIndexPath
中切换indexPath
。行并从此方法实例化我的segues。我遇到的问题是执行segue时出现 SIGABRT 崩溃。 prepareForSegue
被调用,因此我知道segue正在被触发,但它导致了我无法理解的崩溃。代码发布如下,任何帮助将不胜感激,谢谢。
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
switch(indexPath.row)
{
case 0:
break;
case 1:
{
[self performSegueWithIdentifier:@"SecondViewController" sender:self];
//Also tried passing in the cell for the parameter "sender:" but this
//doesnt work either.
break;
}
//Other segues would be performed in a similar manner.
case 2:
break;
case 3:
break;
case 4:
break;
case 5:
break;
}
}
答案 0 :(得分:1)
您的segue被配置为“推送”segue。这意味着SecondViewController
的实例将被推送到导航控制器的导航堆栈。 (见Push Segues on Apple's storyboard tutorial。)
但是,您的表视图控制器不在导航控制器内,因此这是不可能的。 (没有一堆视图控制器可以继续使用。)
您的简单选择:
更复杂的解决方案涉及构建自定义父视图控制器和定义自定义转换,但我认为这不是您所追求的。
一些不相关的一般信息:
prepareForSegue:sender:
方法。否则忽略此参数。