如果没有显示ViewController1
但ViewController2
是:我可以轻松更新来自ViewController1
的{{1}}中的GUI,但我无法在ViewController2
中检索任何值同时提出了ViewController1
。如果未显示ViewController2
,则始终将属性返回为nil。
就我而言,每个视图控制器都显示在标签栏视图控制器上。
解决这个问题的最佳方法是什么?谢谢。
答案 0 :(得分:3)
您指定的nib文件不会立即加载。它载入了 第一次访问视图控制器的视图。如果你想 加载nib文件后执行其他初始化 覆盖viewDidLoad方法并在那里执行任务。
这是关于initWithNibName
指定初始化程序的文档:https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIViewController_Class/#//apple_ref/occ/instm/UIViewController/initWithNibName:bundle:
编辑基于以下评论:
如果您使用UITabBarController
,则它具有viewControllers
属性,以便视图控制器的所有保留计数不会减少到0,但尚未取消分配。如果您发现任何nil
,那么初始化程序中应该存在一些问题。
https://developer.apple.com/library/ios/documentation/UIKit/Reference/UITabBarController_Class/#//apple_ref/occ/instp/UITabBarController/viewControllers
您不应该有自己的机制来访问视图控制器。相反,请使用viewControllers
中的UITabBarController
属性,因为它有助于管理有效的视图控制器。