首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在iOS7中取消交互式pop手势时将数据传递给子控制器?

如何在iOS7中取消交互式pop手势时将数据传递给子控制器?
EN

Stack Overflow用户
提问于 2013-11-16 07:14:19
回答 2查看 314关注 0票数 0

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

在iOS 7中,似乎有一个新的导航成语,您可以拖动屏幕的左边边缘以返回导航堆栈。当您启动手势时,子视图被移除并显示父视图,但是如果拖得不够远就会取消它,子视图会被取消,子视图会重新定位,但是没有prepareForSegue调用。此时子视图中的数据项是nil,这使我认为它是重新创建的。

如何正确地将数据传递给子视图控制器,该子视图控制器可以同时工作于segues和这个导航成语?

EN

回答 2

Stack Overflow用户

发布于 2013-11-16 07:36:30

你对视图控制器的看法是错误的,它是由被破坏的拖拽弹出的,但事实并非如此。当您开始拖动时调用viewWillDisappear,如果它取消,则调用viewWillAppear和viewDidAppear,但不调用viewDidLoad或dealloc,因此不会创建新的控制器。如果要将数据传递回执行拖动时出现的控制器,则应使用委托协议。您可以将该控制器设置为在执行原始推送时被推送的控制器的委托(或前进到该第二个控制器的segue )。而且,调用这些控制器父和子控制器是不正确的--它们都是导航控制器的viewControllers数组中的控制器。这两个控制器中任何一个的父控制器都是导航控制器。

票数 3
EN

Stack Overflow用户

发布于 2013-11-16 10:03:20

事实证明,实际原因与视图生命周期完全无关,但将数据项传递给详细视图这一事实被存储为弱引用。

  1. 在我的代码中,列表视图将其数据保存在NSArray*属性中。
  2. 在转换时,使用来自所述数组的项初始化详细视图,并将其存储在弱属性中。
  3. 启动pop手势时,将显示列表视图。在我的代码中,当显示list视图时,它的item列表被重新加载,自然会取消子视图中的引用。
  4. 当手势被取消时,细节视图将不带segue显示,并带有nil项。

解决方案:将详细信息视图中的引用更改为strong

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20015879

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档