2012-02-20 47 views
0

场景:如何在返回时将数据从一个View Controller传递到Storyboard中的另一个?

  • 故事板用的UINavigationController作为初始控制器。
  • MainVC(导航控制器的root vc)需要用户在地图上选择一个位置。
  • MainVC推送包含MapKit映射的VC,并将其自身添加为用户选择位置时MapVC发出的通知的侦听器。
  • MapKit是一个内存猪,我们都知道。 iOS给我一个内存警告,我做所有需要做的事情,然后iOS释放它可以释放的所有东西,包括MainVC。
  • MapVC发出通知,但没有人收听。用户选择的位置丢失,就像雨中的泪水一样。

鉴于此,回到MainVC时传递位置数据的可靠方法是什么?我甚至想到把它写成〜/ tmp(这是我在处理像图像这样的大量数据时要做的事情),但这看起来像是浪费机器。没有一个我可以挂钩的机制,就像导航控制器返回到前一个VC时触发的事件一样?就像,有了像prepareForSegue一样的东西:但在相反的方向将是很好的。

编辑我试着去参加代表团,但看起来我的代表被发布了。我坚持要写〜/ tmp吗?

+0

代表团是要走的路 - 这听起来像你有一个问题,您的委托对象被释放? – petert 2012-02-20 12:23:27

+0

我只能补充说,如果我在MainVC(现在是MapVC.delegate)中注释掉[super didReceiveMemoryWarning],它不会被取消分配。尽管如此,我认为这不符合要求。 – Morpheu5 2012-02-20 14:31:56

回答

0

见我的答案在这里设立一个委托和委托协议的详细解释 - here

+0

好的,代理工作并在内存警告后保持运行。这个神秘的现在是:为什么我的领域和按钮不保留它们的价值和状态?具体来说,我有一个UITextView的一些文本被清除,一些按钮应该突出显示/启用,但他们不是。 – Morpheu5 2012-02-20 16:12:45

+0

此外,我可以确认这些字段保持其正确的值和启用/突出显示的状态,它们只是在MapVC弹出时才显示。 – Morpheu5 2012-02-20 16:16:12

+0

我不明白这个新问题。我有一个建议。接受这个答案,转换成ARC来清理你的记忆问题,并写出一个新问题,解决你的问题。要在Xcode中将项目转换为ARC,请选择“编辑”,然后“重构”,最后选择“转换为ARC”。在转换出现问题的情况下,首先使用“文件”“创建快照”快照您的项目。 – 2012-02-20 17:50:04

相关问题