重新加载根视图控制器

时间:2012-06-21 14:29:14

标签: objective-c ios cocoa-touch uiviewcontroller uinavigationcontroller

我正在使用我的应用中的UINavigationController。在viewDidLoad中,根视图控制器从Internet获取信息,对其进行解析并显示它。

当转到UINavigationController中的另一个视图,然后返回到根UIViewController时,控制器中的信息不会重新加载。这使我认为viewDidLoad没有被调用。

当根视图控制器弹回到UINavigationController时,我应该使用什么方法来确保重新加载此信息?

修改

感谢快速回复的人,这意味着很多。还有一个关于答案的问题:viewWillAppearviewDidAppear?每个人都有利弊吗?

4 个答案:

答案 0 :(得分:8)

您应该处理viewWillAppear:viewDidAppear:,具体取决于您是否希望在屏幕上显示视图之前或之后重新加载。 <{1}}仅在加载视图时被调用一次。

答案 1 :(得分:1)

您应该使用viewDidAppearviewDidLoad仅在首次加载视图后调用。

在这里查看:

UIView Programattion Guide

答案 2 :(得分:1)

你是对的,它没有被召唤。如果您想在每次转到UIViewController时调用它(UINavigationController内有一个),只需将其放在viewDidAppearviewWillAppear上。


viewWillAppear发生在viewDidAppear之前。出于速度目的,我会以异步方式在辅助线程上的viewDidAppear上执行此操作,因此UI线程不会减慢速度。检索完数据后,我会更新视图。

答案 3 :(得分:1)

viewDidLoad仅在最初创建视图控制器时调用,或者由于它被隐藏且应用程序收到内存警告而被卸载。您可以选择实施viewWillAppear:viewDidAppear:来刷新用户界面。