以编程方式加载UIViewController子类时,如果您将任何文件命名为与子类不同的名称,则不会加载与该ViewController关联的任何nib。
自动加载nib而不将字符串名称传递给初始化程序的唯一方法是确保x.nib
和class.swift
与SubClass
具有相同的名称。< / p>
有解决方法吗?
答案 0 :(得分:12)
根据文档,您实际上可以加载基于nib的视图控制器,而无需将其命名为完全相同的东西。虽然匹配名称是最常用的方法,但第二种情况也是如此,即使使用Swift也是如此。
如果您使用nib文件来存储视图控制器的视图,那么它就是 建议您明确指定该nib文件 初始化视图控制器。
但是,如果您没有指定 nib名称,并且不要覆盖自定义中的loadView方法 子类,视图控制器使用other搜索nib文件 手段。具体来说,它会查找具有适当名称的nib文件 (没有.nib扩展名)并在其视图时加载该nib文件 请求。具体来说,它(按顺序)查找带有的nib文件 以下名称之一:
如果视图控制器类名以“Controller”结尾,如在MyViewController中,它会查找名称与之匹配的nib文件 没有单词'Controller'的类名,如MyView.nib。
- 醇>
它查找名称与视图控制器类名称匹配的nib文件。例如,如果类名是MyViewController, 它查找MyViewController.nib文件。
答案 1 :(得分:-5)
只有当nib和class-file是同名的SAME名称时,nib才会自动加载...