viewDidLoad中的视图为空

viewDidLoad中的视图为空,view,nib,View,Nib,我创建了UITabBarController,每个选项卡包含UINavigationController,并在此UINavigationController中设置了rootviewcontroller,所有这些都是在interface builder中完成的。在viewDidLoad中,我尝试从视图中获取帧大小,但当我引用视图时,它返回null。以前有人经历过这种情况吗 所有IBoutlet都已正确连接。viewDidLoad如果在中连接了视图,则返回nil视图。xib可能意味着: 对于编程初始

我创建了
UITabBarController
,每个选项卡包含
UINavigationController
,并在此
UINavigationController
中设置了rootviewcontroller,所有这些都是在interface builder中完成的。在viewDidLoad中,我尝试从视图中获取帧大小,但当我引用视图时,它返回null。以前有人经历过这种情况吗


所有IBoutlet都已正确连接。

viewDidLoad
如果在
中连接了视图,则返回nil视图。xib
可能意味着:

对于编程初始化(自定义控制器):

  • 您忘了在视图控制器类上同时调用
    initWithNibName:bundle:
    (您可能调用了
    init
    或其他东西)
  • 您已经在视图控制器类中重写了
    loadView
    方法,但它没有设置
    view
对于所有控制器:

  • 未正确连接插座
  • 您在显示视图或视图控制器之前意外释放了它
  • 初始化视图时未正确指定
    nibName
    参数(找不到nib或找不到没有视图的nib..尽管这也会引发异常)
  • 内存不足,无法分配
    视图
    (但应用程序可能在该点终止)

我建议您尝试在
视图中进行帧大小计算,此时将显示:
,并查看
视图在该点上是否仍然为
nil

viewDidLoad
如果在
中连接视图,则返回nil视图。xib
可能意味着:

对于编程初始化(自定义控制器):

  • 您忘了在视图控制器类上同时调用
    initWithNibName:bundle:
    (您可能调用了
    init
    或其他东西)
  • 您已经在视图控制器类中重写了
    loadView
    方法,但它没有设置
    view
对于所有控制器:

  • 未正确连接插座
  • 您在显示视图或视图控制器之前意外释放了它
  • 初始化视图时未正确指定
    nibName
    参数(找不到nib或找不到没有视图的nib..尽管这也会引发异常)
  • 内存不足,无法分配
    视图
    (但应用程序可能在该点终止)

我建议您尝试在
视图中进行帧大小计算,结果将显示:
,然后查看
视图在该点上是否仍然为
nil

我没有调用任何init,因为我使用的是interface builder,并且没有覆盖loadView。我尝试在viewDidLoad中调用view,视图就在那里。为什么我不能在viewDidLoad中引用它,我想我没有错过您为我指出的所有列表。只需尝试在
视图中进行计算就会出现
。如果这不起作用,请尝试
viewdide
。如果在
视图显示时它不起作用,您可能没有正确访问
(在屏幕上绘制时它必须有一个
帧)。是的,我可以引用ViewDidDisplay中的视图,但我希望设置视图一次,而不是每次视图显示时。只是想知道为什么viewDidLoad中的视图为空。您可以测试视图是否已设置,并且仅在尚未运行定位代码时运行定位代码。如果只是定位,请尝试将BOOL添加到控制器类中,仅当代码块为“否”时运行代码块,并在代码运行时将其设置为“是”。否则,请检查您的视图是否处于初始状态而不是设置状态。无意冒犯,但此答案没有帮助,而且不完整。像sarunw一样,我有必须访问子视图对象的初始化,并且必须在
ViewDidLoad
中进行,而不是在它出现时。此外,您所说的“未正确连接插座”是什么意思?我如何检查“nibName参数没有(或)被正确指定”?问题是,所有脚本生成的视图/子视图在
ViewDidLoad
中都为空,它们不应该为空。我们如何解决这个问题?我没有调用任何init,因为我使用的是interface builder,并且没有覆盖loadView。我尝试在viewDidLoad中调用view,视图就在那里。为什么我不能在viewDidLoad中引用它,我想我没有错过您为我指出的所有列表。只需尝试在
视图中进行计算就会出现
。如果这不起作用,请尝试
viewdide
。如果在
视图显示时它不起作用,您可能没有正确访问
(在屏幕上绘制时它必须有一个
帧)。是的,我可以引用ViewDidDisplay中的视图,但我希望设置视图一次,而不是每次视图显示时。只是想知道为什么viewDidLoad中的视图为空。您可以测试视图是否已设置,并且仅在尚未运行定位代码时运行定位代码。如果只是定位,请尝试将BOOL添加到控制器类中,仅当代码块为“否”时运行代码块,并在代码运行时将其设置为“是”。否则,请检查您的视图是否处于初始状态而不是设置状态。无意冒犯,但此答案没有帮助,而且不完整。像sarunw一样,我有必须访问子视图对象的初始化,并且必须在
ViewDidLoad
中进行,而不是在它出现时。此外,您所说的“未正确连接插座”是什么意思?我如何检查“nibName参数没有(或)被正确指定”?问题是,所有脚本生成的视图/子视图在
ViewDidLoad
中都为空,它们不应该为空。我们如何解决这个问题?