【发布时间】:2011-11-08 03:11:51
【问题描述】:
我创建了UITabBarController,每个选项卡都包含UINavigationController,并在此UINavigationController 中设置rootviewcontroller,所有这些都在界面生成器中完成。在 viewDidLoad 我尝试从视图中获取帧大小,但是当我引用视图时它返回 null。以前有没有人经历过这种情况。
所有 IBoutlet 均已正确连接。
【问题讨论】:
我创建了UITabBarController,每个选项卡都包含UINavigationController,并在此UINavigationController 中设置rootviewcontroller,所有这些都在界面生成器中完成。在 viewDidLoad 我尝试从视图中获取帧大小,但是当我引用视图时它返回 null。以前有没有人经历过这种情况。
所有 IBoutlet 均已正确连接。
【问题讨论】:
viewDidLoad 如果视图已连接到您的 .xib,则返回 nil 视图可能意味着:
对于编程初始化(自定义控制器):
initWithNibName:bundle:(您可能已经调用了 init 或其他名称)。loadView 方法,但它没有设置 view。对于所有控制器:
nibName 参数(找不到 nib 或找到没有视图的 nib。虽然这也应该引发异常)。view(不过,应用很可能已经被终止了)。我建议您尝试在 viewWillAppear: 中进行帧大小计算,然后查看此时 view 是否仍为 nil。
【讨论】:
viewWillAppear 中进行计算。如果这不起作用,请尝试viewDidAppear。如果viewDidAppear 不能正常工作,您可能没有正确访问frame(它在屏幕上绘制时必须有frame)。
ViewDidLoad 中这样做,而不是在它出现时这样做。另外,“插座连接不正确”是什么意思?以及如何检查“nibName 参数未[或]正确指定”?问题是所有故事板制作的视图/子视图在ViewDidLoad 中都是空的,它们不应该是。我们如何解决这个问题?