Xcode 6 – 将segue推送到同一个视图控制器

我有一个表视图控制器,并且单击一个单元格可以根据单元格中的数据类型触发许多不同类型的推送段之一。 在tableView:didSelectRowAtIndexPath中确定正确segue的标识符,然后使用self.performSegueWithIdentifier触发segue:

对于其中一个segues,我想将同一个视图控制器的另一个实例推送到导航堆栈。 这是否可以在不必将相同类型的新视图控制器对象拖到故事板上? 到目前为止,如果我从表格单元格Ctrl +拖动到视图控制器,我只能将segue连接到同一个视图控制器。 这不是我想要的。

正如所建议的那样,我认为segue不会起作用。 相反,您可以以编程方式推送同一视图控制器的新实例,这与执行segue具有相同的效果。 不同之处在于不会调用像prepareForSegue这样的segue委托方法。

- (void) tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { MyViewController *vc = [[MyViewController alloc] init]; [self.navigationController pushViewController:vc animated:YES]; } 

完成上面的答案你可以在Swift 3中使用:

  let vc = ViewController() self.navigationController?.show(vc, sender: nil) 

如果您使用的是故事板,可以使用:

 let vc = self.storyboard?.instantiateViewController(withIdentifier: "ViewControllerID") as! YourViewController self.navigationController?.show(vc, sender: nil)