iOS - xib作为创建出控制器的view

我们知道通过xib来创建控制器的 view 系统会找在工程目录中与自己名字相一致的xib比如:

[[VideoViewController alloc] init] //创建一个视频控制器

1.VideoViewController.xib
2.VideoView.xib

首先会去查找有没有VideoViewController为前缀的xib如果有则加载, 如果没有会继续查找VideoView为前缀的xib如果有就加载. 找到之后就会以xib所指定的view作为创建出来VideoViewController控制器的view.

  1. 在以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 的类型为控制器的类型:

iOS - xib作为创建出控制器的view_第1张图片
图片 0.png

2 然后我们只要明确指定 xib中哪个view 作为控制器的view就可以解决该问题:


iOS - xib作为创建出控制器的view_第2张图片
图片 1.png

另外, 注意控制器view的类型必须要和 xib 中指定控件(view)的类型一致:

iOS - xib作为创建出控制器的view_第3张图片
图片 2.png

如果 xib 中指定的控件和控制器view的类型不匹配,则会报错:

-[XXXViewController loadView] loaded the "XXXView" nib but didn't get a "XXXView".

希望可以帮助到大家,谢谢!

你可能感兴趣的:(iOS - xib作为创建出控制器的view)