我们知道通过xib来创建控制器的 view 系统会找在工程目录中与自己名字相一致的xib比如:
[[VideoViewController alloc] init] //创建一个视频控制器
1.VideoViewController.xib
2.VideoView.xib
首先会去查找有没有VideoViewController为前缀的xib如果有则加载, 如果没有会继续查找VideoView为前缀的xib如果有就加载. 找到之后就会以xib所指定的view作为创建出来VideoViewController控制器的view.
-
在以xib作为创建出来控制器的view, 如遇以下报错信息:
-[UIViewController _loadViewFromNibNamed:] loaded the "VideoView" nib but the view outlet was not set.
应该如何处理?
首先, 我们要明确此问题的原因. 从错误信息中我们可以了解到 加载 "VideoView" nib文件时并没有设置 "outlet", 换言之当控制器加载此 xib 时并没有指定该 xib中哪个控件作为控制器的 view, 如果xib中描述了若干个控件(view)那么系统怎么知道你需要将哪个控件作为该控制器的 view 创建并显示出来呢?
1 点击"File's owner"设置该 xib 的类型为控制器的类型:
图片 0.png2 然后我们只要明确指定 xib中哪个view 作为控制器的view就可以解决该问题:
图片 1.png
另外, 注意控制器view的类型必须要和 xib 中指定控件(view)的类型一致:
图片 2.png如果 xib 中指定的控件和控制器view的类型不匹配,则会报错:
-[XXXViewController loadView] loaded the "XXXView" nib but didn't get a "XXXView".
希望可以帮助到大家,谢谢!
网友评论