我已经为此苦苦挣扎了将近 2 个小时,但没有成功。
我有一个 View Controller 。让我们称之为第一。我按下一个按钮,它使用模态样式将我带到第二个 View Controller 。在第二个中,我添加了一些数据,我可以通过两个导航栏按钮保存或丢弃这些数据:保存和取消。两者都做他们所做的,然后他们让我回到上一个屏幕。我实现了一个协议(protocol)并使用了委托(delegate)。到目前为止一切正常。
今天我决定拥有一个可以从第二个 VC 访问的第三个 View Controller 。问题是我无法移动到 THIRD,直到我将从 First 到 Second 的过渡更改为 PUSH(而不是模态)。现在我可以从第一跳到第二,从第二跳到第三。一切都很好。
问题:如果我在第二个 VC 上按取消或保存,它会调用方法,它使用委托(delegate)转到第一个并执行一些函数,但是当它调用时:
[self dismissViewControllerAnimated:YES completion:nil];
没有任何反应,我停留在第二个 View 上。基本上我是使用 MODAL 与委托(delegate)和协议(protocol)方法......我切换到 PUSH,我无法摆脱我的第二个 View 并返回到第一个。似乎 dismissViewController 什么也没做。
非常感谢任何帮助。我可以通过删除取消按钮并使用默认带有 PUSH 的 BACK 来解决所有这些问题,但我只想知道它的问题是什么..谢谢!!
最佳答案
在您的第二个 viewController 上调用 UINavigationController
的方法 popViewControllerAnimated:
或 popToRootViewControllerAnimated:
。这将从导航堆栈中弹出 Controller (调用的是第二个)。您可以通过其属性 navigationController
在 UIViewController
中获取导航 Controller 。
关于iphone - iOS:通过委托(delegate)方法从推送的 ViewController 返回?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9918144/