如何使用nib加载View Controller SubClass而不将nib名称指定为字符串?

时间:2016-01-26 17:39:28

标签: ios swift nib

以编程方式加载UIViewController子类时,如果您将任何文件命名为与子类不同的名称,则不会加载与该ViewController关联的任何nib。

自动加载nib而不将字符串名称传递给初始化程序的唯一方法是确保x.nibclass.swiftSubClass具有相同的名称。< / p>

有解决方法吗?

2 个答案:

答案 0 :(得分:12)

根据文档,您实际上可以加载基于nib的视图控制器,而无需将其命名为完全相同的东西。虽然匹配名称是最常用的方法,但第二种情况也是如此,即使使用Swift也是如此。

来自the documentation

  

如果您使用nib文件来存储视图控制器的视图,那么它就是   建议您明确指定该nib文件   初始化视图控制器。

     

但是,如果您没有指定   nib名称,并且不要覆盖自定义中的loadView方法   子类,视图控制器使用other搜索nib文件   手段。具体来说,它会查找具有适当名称的nib文件   (没有.nib扩展名)并在其视图时加载该nib文件   请求。具体来说,它(按顺序)查找带有的nib文件   以下名称之一:

     
      
  1. 如果视图控制器类名以“Controller”结尾,如在MyViewController中,它会查找名称与之匹配的nib文件   没有单词'Controller'的类名,如MyView.nib。

  2.   
  3. 它查找名称与视图控制器类名称匹配的nib文件。例如,如果类名是MyViewController,   它查找MyViewController.nib文件。

  4.   

答案 1 :(得分:-5)

只有当nib和class-file是同名的SAME名称时,nib才会自动加载...