ios - 在 iOS7 中取消交互式弹出手势时如何将数据传递给子 Controller ?

标签 ios objective-c uinavigationcontroller ios7

传统上,数据通过调用 prepareForSegue 传递给子 Controller ,例如,当单击表格单元格时。

在 iOS 7 中,似乎有一个新的导航习惯用法,您可以在其中拖动屏幕的左边缘以返回导航堆栈。似乎当您刚开始手势时, subview 被删除并显示父 View ,但是如果您通过拖动不够远来取消它,它将被取消, subview 会弹回原位,但是没有 prepareForSegue 调用。此时 subview 中的数据项是nil,这让我觉得它是重新创建的。

如何正确地将数据传递给既适用于 segues 又适用于此导航习惯用法的 subview Controller ?

最佳答案

关于被销毁的拖动弹出的 View Controller ,你是错误的,它不是。当您开始拖动时调用 viewWillDisappear,如果它取消,将调用 viewWillAppear 和 viewDidAppear,但不会调用 viewDidLoad 或 dealloc,因此不会创建新的 Controller 。如果要将数据传回拖动时出现的 Controller ,则应使用委托(delegate)协议(protocol)。您可以将该 Controller 设置为在您执行原始推送时推送的那个 Controller 的委托(delegate)(或转发到第二个 Controller 的 segue)。此外,将这些 Controller 称为父 Controller 和子 Controller 并不正确​​——它们都是导航 Controller 的 viewControllers 数组中的 Controller 。这两个 Controller 中的任何一个的父级是导航 Controller 。

关于ios - 在 iOS7 中取消交互式弹出手势时如何将数据传递给子 Controller ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20015879/

相关文章:

ios - 以编程方式将标签/字符串添加到 UITableView,就像在 iPhone 设置中看到的那样

ios - 申请被无故终止

ios - 同时切换选项卡并重置 Nav 的 View Controller - Swift iOS

ios - 当使用多个部分时,当部分数量可能发生变化时,如何对 tableView 单元格的删除/添加进行动画处理

ios - Alamofire - 调用中的额外参数 'method'

ios - 如何将 ScrollView 中的图像上传到网络服务器上?

Objective-C 释放单例

iphone - 服务器不接受我的多部分/表单数据

ios - 如何在 Swift 中设置右 UIBarButtonItem 的色调颜色?

ios - 如何在 Swift 中的 UIView/Utility 类中获取导航栏