iOS:通过委托方法从推送的 ViewController 返回?
Posted
技术标签:
【中文标题】iOS:通过委托方法从推送的 ViewController 返回?【英文标题】:iOS: return from pushed ViewController via delegate methods? 【发布时间】:2012-03-29 01:58:52 【问题描述】:我已经为此苦苦挣扎了将近 2 个小时,但没有运气。
我有一个视图控制器。让我们先调用它。我按下一个按钮,它使用模态样式将我带到第二个视图控制器。其次,我添加了一些可以通过两个导航栏按钮保存或丢弃的数据:保存和取消。两者都做他们所做的,然后他们让我回到上一个屏幕。我实现了一个协议并使用了委托。到目前为止一切正常。
今天我决定有一个可以从第二个 VC 访问的第三个视图控制器。问题是在我将转换从 First 到 Second 更改为 PUSH(而不是模态)之前,我无法移动到 THIRD。现在我可以从第一到第二,从第二到第三。一切都很好。
问题:如果我在第二个 VC 上按取消或保存,它会调用方法,它使用委托转到 FIRST 并执行某些函数,但是当它调用时:
[self dismissViewControllerAnimated:YES completion:nil];
什么也没发生,我停留在第二个视图上。基本上我使用的是带有委托和协议方法的 MODAL ......我切换到 PUSH,我无法摆脱我的第二个视图并返回到第一个。似乎dismissViewController 没有做任何事情。
非常感谢任何帮助。我可以通过删除取消按钮并使用默认情况下与 PUSH 一起提供的 BACK 来解决所有这些问题,但我只想知道它有什么问题..谢谢!!
【问题讨论】:
在将 viewControllers 推送到导航堆栈时使用 popViewController:animated。 dismissViewController:animated 仅适用于 modalViews。 谢谢@HubertKunnemeyer!这是正确的解决方案,并且有效! 【参考方案1】:在您的第二个 viewContrller 调用 UINavigationController
的方法 popViewControllerAnimated:
或 popToRootViewControllerAnimated:
。这会将控制器(第一个调用,即第二个)从导航堆栈中弹出。您可以通过其属性navigationController
在UIViewController
中获取导航控制器。
【讨论】:
完美运行!非常感谢 !但只是为了记录。为什么另一种方法不起作用? Nvm Hubert 在上面解释过。关闭仅适用于模态视图!以上是关于iOS:通过委托方法从推送的 ViewController 返回?的主要内容,如果未能解决你的问题,请参考以下文章