1

我有一个标签栏应用程序,我遇到了一个奇怪的行为......当我切换标签栏并进入新的视图控制器时,有时这些视图控制器的 viewDidLoad 被调用......虽然 viewDidLoad 应该只被调用第一次...任何人都可以告诉...任何建议?

4

3 回答 3

2

如果出现内存不足警告,则标签栏控制器将释放所有不可见的视图。这意味着您可以多次调用 viewDidLoad,因为视图已被卸载。

于 2011-02-03T14:13:58.053 回答
1

您的应用程序是否占用大量内存,甚至可能会收到内存警告?尽管我没有经历过您所描述的行为,但由于内存不足,您的未见视图可能会因内存不足而被释放。当它们下一次被调用到视图中时,它们需要重新初始化,调用viewDidLoad.

于 2011-02-03T14:13:32.207 回答
0

你确定它是 viewDidLoad,而不是 viewWillAppear?

viewDidLoad 在每个 UIViewController 子类中只会被调用一次,所以如果你的布局是这样的:

-UITabBarController:
    - HappyUIViewController
    - SadUIViewController
    - ThirdUIViewController

然后 viewDidLoad 会被调用 3 次。一次用于 HappyUIViewController,一次用于 SadUiViewController,以此类推。

于 2011-02-03T14:11:10.817 回答