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

时间:2014-10-23 16:33:18

标签: ios xcode xcode6 uistoryboard

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

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

3 个答案:

答案 0 :(得分:10)

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

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

答案 1 :(得分:0)

完成上面的回答你可以使用:

在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)

答案 2 :(得分:0)

  1. 在IB中创建一个Storyboard Reference
  2. 将其引用给视图控制器。
  3. 然后您可以从视图控制器到引用本身的引用创建序列。