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

ben*_*ock -6 nib ios swift

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

自动加载的笔尖,而不通过一个字符串名来初始化的唯一途径,是确保您x.nibclass.swift具有相同的名称SubClass.

有没有解决的办法?

Mos*_*she 12

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

文档:

如果使用nib文件存储视图控制器的视图,建议您在初始化视图控制器时明确指定该nib文件.

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

  1. 如果视图控制器类名称以"Controller"结尾,如在MyViewController中,它会查找名称与类名称匹配的nib文件,而不是"Controller",如MyView.nib中所示.

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