如何弹出self然后从父视图控制器执行segue?

时间:2017-03-07 04:49:54

标签: swift3 segue

enter image description here

我在导航视图控制器中嵌入了一个名为ItemsViewController的tableview视图控制器,用于显示项目。

流量1(按预期工作) 我在ItemsViewController上有一个“新项目”按钮,单击该按钮会显示一个视图控制器弹出窗口(AddItemViewController),您可以在其中添加项目的名称和其他详细信息。单击“保存”后,将弹出视图,并显示ItemsViewController,显示新创建的项目。

流程2 如果您点击“保存并打开”创建新项目,我希望它弹出AddItem view controller并按itemDetail视图控制器显示新创建的项目名称和其他项目详细信息。

因此,在AddItemsView控制器的“保存并打开”操作中,我有:

dismiss(animated: true, completion: {
 self.performSegue(withIdentifier: "ShowItemList", sender: newItemList)
})

这解除了Itemsview控制器,但随后它与thread 1: signal SIGABRT崩溃。

修改

如果我引用父级,则它会解除添加视图控制器但不执行segue

dismiss(animated: true, completion: {
 self.parent?.performSegue(withIdentifier: "ShowItemList", sender: newItemList)
})

1 个答案:

答案 0 :(得分:0)

执行以下操作:

1)在addItemViewController中调用dismiss方法

    self.dismiss(animated: true, completion: nil)
    self.delegate.methodToCall()

从addItemViewController返回时必须创建委托,并在从addItemViewController返回时在父类中实现方法

2)然后在你的itemsViewController中实现类似

的方法
    func yourMethodToCall() {
          self.perform(#selector(ItemViewController.temp), with:nil, afterDelay: 0.4)

         }      

    func temp(){
    // push view controller here

       }