我有三个视图控制器
这是我试图解决的一个场景
ViewControllerB将ViewControllerC呈现为模态,带有close 代表
按下ViewControllerC关闭按钮,发送关闭代理并关闭ViewControllerC
ViewControllerB收到close委托,并尝试解散 本身就显示了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
}
答案 0 :(得分:1)
您说您正在将视图控制器B推到导航控制器上。无法关闭视图控制器B,因为包含它的导航控制器是根视图控制器。
您需要pop
返回导航控制器的根视图控制器,因此您在视图控制器A上的委托方法实现应该执行pop而不是dismiss。