1

我已经摔跤了近2个小时,现在没有运气。iOS:通过委托方法从推送ViewController返回?

我有一个视图控制器。让我们先说它。我按了一个按钮,它将我带到使用模式风格的第二个视图控制器。在第二个我添加一些数据,我可以通过两个导航栏按钮保存或放弃:保存和取消。既做他们做的事,然后他们回到我以前的屏幕。我实现了一个协议,并使用委托。到目前为止一切正常。

今天我决定有一个第三视图控制器,可以从第二个VC访问。问题是我无法转移到THIRD,直到我将第一个转换为第二个转换为PUSH(而不是模式)。现在我可以从第一到第二和第二到第三。一切都很好。

问题是:如果我按取消或保存在第二VC,它调用的方法,它采用了代表去FIRST和执行某些功能,但是当它调用:

[self dismissViewControllerAnimated:YES completion:nil];

什么发生和我卡在第二个视图。基本上我使用MODAL与委托和协议方法...我切换到PUSH,我不能摆脱我的第二个观点,并返回到第一。这似乎是dismissViewController不做任何事情。

任何帮助,非常感谢。我可以通过删除取消按钮并使用默认使用PUSH后退的BACK来解决所有这些问题,但我只想知道问题出在哪里。谢谢!

+1

使用popViewController:将viewControllers推送到导航堆栈时生成动画。 dismissViewController:animated仅限于modalViews。 – 2012-03-29 02:13:18

+0

谢谢@HubertKunnemeyer!这是正确的解决方案,它的工作原理! – 2012-03-29 02:23:50

回答

2

在您的第二个viewContrller上调用UINavigationController的方法popViewControllerAnimated:popToRootViewControllerAnimated:。这将弹出控制器(一个调用,这是第二个)关闭导航堆栈。您可以通过其属性navigationController获取导航控制器UIViewController

+0

完美工作!非常感谢 !但只是为了记录。为什么其他方法不起作用? – 2012-03-29 02:23:03

+0

Nvm Hubert在上面解释了它。关闭仅适用于模态视图! – 2012-03-29 02:24:22