2014-11-02 64 views
-1

尝试设置4个不同的细分,这些细分是由UITableView中的4个不同细胞触发的,以便在我的应用中适用于不同的视图控制器。我的主菜单嵌入在导航控制器中。我通过控制从主菜单视图控制器拖动到4个不同的视图控制器来设置赛格。然后在didSelectRowAtIndexPath我切换indexPath .row并从此方法实例化我的segues。我遇到的问题是当执行segue时发生崩溃。 prepareForSegue被调用,所以我知道segue正在被触发,但它导致了我似乎无法弄清楚的崩溃。代码发布如下,任何帮助将不胜感激,谢谢。视图控制器从didSelectRowAtIndexPath中搜索

-(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; 
    } 

} 

enter image description here

+0

你的segues是否从tableview连接到目的地?这可能是问题(无论如何都是这样)尝试从你拥有的视图控制器(即包含你的tableview的视图控制器)将segues连接到目标视图控制器。希望这可以帮助。 – Gismay 2014-11-02 23:07:39

+0

如果说SIGABRT已经发生,你能否分享实际的异常 - 如在什么情况下导致了崩溃?另外,如果您转到故事板中的相应segue,是否将其命名为SecondViewController?如果不是,那可能是问题 - 它试图执行一个不存在的segue。 – 2014-11-02 23:11:42

+0

@Gismay是的,segues从包含tableView的视图控制器连接。它必定是导致问题的其他因素。 – zic10 2014-11-02 23:54:34

回答

1

你赛格瑞被配置为 “推” SEGUE。这意味着SecondViewController的实例将被推送到导航控制器的导航堆栈。 (见Push Segues on Apple's storyboard tutorial。)

但是,您的表视图控制器不在导航控制器内,所以这是不可能的。 (有没有堆栈视图控制器推到。)

您简单的选择:

  • 您SEGUE更改为 “显示”(在Xcode 6),或 “莫代尔”(在Xcode 5)
  • 嵌入你的表视图控制器的导航控制器,所以有一个堆栈推到

更复杂的解决方案涉及构建自定义父视图控制器和定义自定义的转换,但我猜想这不是你”重新过后。


一些无关的一般信息:

  • 您试图改变 “发件人” 没关系。所有“发件人”都允许您将任何想要的对象传递给prepareForSegue:sender:方法。否则该参数将被忽略。
  • 当您遇到崩溃时,您应该始终阅读控制台和堆栈跟踪。如果你不能解决这个问题,请将它们包含在Stack Overflow问题中。 My App Crashed, Now What?是非常好的阅读,如果你是新来调试这个东西。
+0

我明白你在说什么。我猜这个问题也许是因为我没有使用UITableViewController,而是在UIViewController中使用了带有tableView的UIViewController。我添加了一张图片,显示故事板的配置方式。 – zic10 2014-11-03 01:34:03

相关问题