【发布时间】:2016-01-26 17:39:27
【问题描述】:
当您以编程方式加载 UIViewController 子类时,如果您将任何文件命名为与子类不同的名称,则不会加载与该 ViewController 关联的任何 nib。
在不将字符串名称传递给初始化程序的情况下自动加载 nib 的唯一方法是确保您的 x.nib 和 class.swift 与 SubClass 具有相同的名称。
有没有办法解决这个问题?
【问题讨论】:
当您以编程方式加载 UIViewController 子类时,如果您将任何文件命名为与子类不同的名称,则不会加载与该 ViewController 关联的任何 nib。
在不将字符串名称传递给初始化程序的情况下自动加载 nib 的唯一方法是确保您的 x.nib 和 class.swift 与 SubClass 具有相同的名称。
有没有办法解决这个问题?
【问题讨论】:
根据文档,您实际上可以加载基于 nib 的视图控制器,而无需将其命名为完全相同的东西。尽管匹配名称是最常用的方法,但还有第二种情况,即使在 Swift 中也可以使用。
如果你使用一个 nib 文件来存储你的视图控制器的视图,它是 建议您在以下情况下明确指定该 nib 文件 初始化你的视图控制器。
但是,如果您不指定 nib 名称,并且不要覆盖自定义中的 loadView 方法 子类,视图控制器使用其他方法搜索 nib 文件 方法。具体来说,它会查找具有适当名称的 nib 文件 (没有 .nib 扩展名)并在其视图时加载该 nib 文件 被要求。具体来说,它会(按顺序)查找 nib 文件 以下名称之一:
如果视图控制器类名称以单词“Controller”结尾,如在 MyViewController 中,它会查找名称与 不带“Controller”一词的类名,如 MyView.nib。
它查找名称与视图控制器类的名称匹配的 nib 文件。例如,如果类名是 MyViewController, 它会查找 MyViewController.nib 文件。
【讨论】:
只有当 nib 和 class-file 与 class 名称相同时,nib 才会自动加载...
【讨论】: