5

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

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

我应该使用什么方法来确保在将根视图控制器弹回到UINavigationController?

编辑:

感谢你们的快速回复,这意味着很多。关于您的答案的另一个问题:viewWillAppearviewDidAppear?每个都有优点/缺点吗?

4

4 回答 4

9

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

于 2012-06-21T14:32:18.460 回答
1

您应该使用viewDidAppear,viewDidLoad仅在第一次加载视图后调用。

在这里检查一下:

UIView 编程指南

于 2012-06-21T14:31:59.267 回答
1

你是对的,它没有被调用。如果您想在每次访问时调用它UIViewController(您的内部有一个UINavigationController),只需将其放在viewDidAppearor上viewWillAppear


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

于 2012-06-21T14:32:20.820 回答
1

viewDidLoad仅在最初创建 View Controller 时调用,或者因为它被隐藏而被卸载并且应用程序收到内存警告时才调用。您可以交替实现viewWillAppear:viewDidAppear:刷新您的 UI。

于 2012-06-21T14:34:57.683 回答