UIViewController连续取消调用



我有三个视图控制器

  • ViewControllerA
  • 视图控制器B
  • ViewControllerC

这是我试图解决的一个场景

  • ViewControllerA在导航层次结构上推送ViewControllerB
  • ViewControllerB将ViewControllerC呈现为模态,并关闭代理

  • ViewControllerC关闭按钮被按下,关闭委托被发送,ViewControllerC被解除

  • ViewControllerB接收到关闭委托,并尝试取消因此ViewControllerA显示

出于某种原因,ViewControllerB没有被解雇。如果我在ViewControllerB中按下取消按钮,它就会被取消。

为什么不能连续解雇?

ViewControllerC

@IBAction func closeClick(sender: AnyObject) {
    self.closeDelegate?.didClose()
    self.dismissViewControllerAnimated(true, completion: nil)
}

ViewControllerB

func didClose() {
        print("did close") // gets called
        self.dismissViewControllerAnimated(false, completion: nil) // no dismiss
        //self.navigationController?.popViewControllerAnimated(false)
}
@IBAction func cancelClick(sender: AnyObject) {
        self.dismissViewControllerAnimated(true, completion: nil) // works
}

您说过要将视图控制器B推到导航控制器上。由于包含视图控制器B的导航控制器是根视图控制器,因此不可能取消视图控制器B。

您需要将pop返回到导航控制器的根视图控制器,因此视图控制器A上的委托方法实现应该执行pop而不是disse。

最新更新