【发布时间】:2012-07-31 07:58:32
【问题描述】:
我有一个列表控制器,它触发performSegueWithIdentifier 来加载所选项目的detailViewController。为了初始化 detailViewController,我在 prepareForSegue 中设置了一个属性,该属性在 detailView 显示之前被调用。这一切都很好。
但是...
从详细视图中,我导航到一个执行一些内存密集型操作的控制器,我的 detailViewController 最终被卸载,viewDidUnload 被调用。
现在用户按下标题栏中的后退按钮导致popViewController 触发。当 detailViewController 的 viewDidLoad 方法再次执行时,我没有机会在显示之前设置适当的属性。所以此时我的控件都没有显示正确/任何信息。
在我的 detailViewController 上的属性被释放并且用户导航回它后,重新初始化该属性的最佳方法是什么?我曾想过在我的 AppDelegate 上设置“selectedItem”以在这种情况下使用,但这似乎是一种 hack。
提前致谢!
【问题讨论】:
-
viewDidUnload 正在调用要释放的视图,而不是视图控制器。只要 VC 还在那里,你就不应该失去你的财产。你是在释放你自己的 VC 吗?
-
有那么容易吗?今晚我必须仔细检查一下,但我认为我的 VC 上正在调用 dealloc。
标签: ios viewdidload uistoryboardsegue popviewcontroller viewdidunload