我有三个视图控制器
- 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。