当没有呈现UIViewController时,属性返回nil

时间:2015-12-28 05:40:59

标签: ios objective-c viewcontroller

如果没有显示ViewController1ViewController2是:我可以轻松更新来自ViewController1的{​​{1}}中的GUI,但我无法在ViewController2中检索任何值同时提出了ViewController1。如果未显示ViewController2,则始终将属性返回为nil。

就我而言,每个视图控制器都显示在标签栏视图控制器上。

解决这个问题的最佳方法是什么?谢谢。

1 个答案:

答案 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属性,因为它有助于管理有效的视图控制器。