Iphone iOS:通过委托方法从推送的ViewController返回?

Iphone iOS:通过委托方法从推送的ViewController返回?,iphone,ios,delegates,modalviewcontroller,pushviewcontroller,Iphone,Ios,Delegates,Modalviewcontroller,Pushviewcontroller,我已经挣扎了将近两个小时了,但是运气不好 我有一个视图控制器。我们先打电话吧。我按下一个按钮,它会将我带到使用模态样式的第二个视图控制器。第二步,我添加了一些数据,可以通过两个导航栏按钮保存或放弃:保存和取消。两者都做他们所做的,然后将我返回到上一个屏幕。我实现了一个协议,并使用委托。到目前为止一切正常 今天我决定使用第三个视图控制器,可以从第二个VC访问。问题是我无法移动到第三个,直到我将从第一个到第二个的转换更改为PUSH(而不是modal)。现在我可以从第一到第二,从第二到第三。一切又好了

我已经挣扎了将近两个小时了,但是运气不好

我有一个视图控制器。我们先打电话吧。我按下一个按钮,它会将我带到使用模态样式的第二个视图控制器。第二步,我添加了一些数据,可以通过两个导航栏按钮保存或放弃:保存和取消。两者都做他们所做的,然后将我返回到上一个屏幕。我实现了一个协议,并使用委托。到目前为止一切正常

今天我决定使用第三个视图控制器,可以从第二个VC访问。问题是我无法移动到第三个,直到我将从第一个到第二个的转换更改为PUSH(而不是modal)。现在我可以从第一到第二,从第二到第三。一切又好了

问题:如果我在第二个VC上按Cancel或Save,它会调用这些方法,它会使用委托转到第一个并执行某些函数,但当它调用时:

[自解除视图控制器激活:是完成:无]

什么也没发生,我被困在第二视图上。基本上,我是在委托和协议方法中使用模态。。。我切换到推,我无法摆脱我的第二个观点,回到第一个。看起来dismissViewController什么都没做


非常感谢您的帮助。我可以通过移除“取消”按钮并使用默认情况下带有“按”的“后退”按钮来修复所有这些问题,但我只想知道它有什么问题。。谢谢

在第二个视图控制器上,调用
UINavigationController
的方法
popViewControllerAnimated:
poptrootviewcontrolleranimated:
。这将使控制器(调用的控制器,第二个)从导航堆栈中弹出。您可以通过其属性
navigationController
UIViewController
中获取导航控制器,将viewcontroller推到导航堆栈上时使用popViewController:animated。dismissViewController:动画是专为ModalView制作的。谢谢@HubertKunnemeyer!这是正确的解决方案,而且很有效!工作得很好!非常感谢你!但只是为了记录在案。为什么另一种方法不起作用呢?Nvm Hubert在上面解释过。解散仅适用于模态视图!