2011-03-10 51 views
3

我通过代码构建了我的视图层次结构,并希望知道是否最好在loadView中创建整个层次结构,何时从我的控制器请求视图,然后将视图动画到viewWillAppear方法中的屏幕,或者更简单一些,但可能需要通过在viewWillAppear中构建整个层次结构来释放和分配内存。viewWillAppear与loadView构建视图层次结构

我的理解是,控制器调用loadView在第一次需要它时创建视图,然后保持它只要它可以这样,以便您可以离开并返回到此控制器并在视图中设置动画,但不需要通过viewWillAppear重新创建并附加它们。

基本上,我发现在loadView中分别分配视图,然后在viewWillAppear中转换(有时更新其内容)它们并且想知道保留视图的好处不会超过简单简单地重新创建它们(并因此重新初始化它们并避免任何未重置的值)。

回答

2

loadView在创建时只被调用一次,应该持续创建视图。

viewWillAppear:(BOOL)animated每次显示视图时都会调用。如果您的观点被保留,您可以在此更新/设置您的数据。 (您的UIButtons,UILabels,...已经由loadView分配,您只需在此处设置内容。)

+0

感谢您的回复。我知道loadView只被调用一次,然后只在os需要释放内存时才被重新调用。我的问题更多地与在每个viewWillAppear时删除和重新加载视图层次结构是否可行有关,这显着简化了实现(即数据经常需要在出现时刷新并且这避免了错误地不重新初始化各种小部件)。例如,这样做意味着我不需要引用我作为成员的各种标签。 – Joey 2011-03-15 23:00:58

+0

保持引用更清晰,因为例如,您必须在dealloc方法中释放它们,并将它们设置为零,否则将会丢失。 – 2011-03-16 08:24:12