我正在创建一个使用ViewController1打开的应用程序,然后一个按钮打开另一个带有模态segue的视图控件(ViewController2) . 然后ViewController2有一个按钮,使用另一个模态segue打开另一个视图控制器(ViewController3) . 2和3视图控制器都有一个解除按钮,可以解除视图控制器 .
问题是,每当ViewController3使用dismiss按钮时,当我希望它解除ViewController1时,它会关闭ViewController 2 . 我已经尝试使用dismiss动作来解除按下按钮的ViewController2,但是segue没有被提交 .
这可能会令人困惑,所以如果您需要帮助理解,请提出问题 . 非常感谢!
(我使用的是Swift 3和Xcode 8)
3 回答
我最喜欢的两个选项:1 . 使用NotificationCenter并发送ViewController2正在侦听的解雇通知2.在ViewController3上设置parentViewController引用,然后在解除自身后调用父节点上的dismiss .
发生这种情况是因为所有3个视图控制器都在堆栈中,每当你关闭顶部的视图控制器时它移动到它下面的视图控制器 . 要导航到viewcontroller1,请使用: -
这很简单!
记得稍后在代码中不需要它们时删除观察者;)