Nib如何加载?

时间:2017-01-27 05:47:46

标签: ios swift

我创建了新文件,然后检查Cocoa Touch Class - >然后我将子类设置为UIViewController - >我标记“还创建XIB文件”。

它按预期创建了简单的UIViewController,但这是我的问题,因为我打电话:

present(MyViewController(), animated: true)

这显示了我想要的MyViewController()但是我怎么可能使用简单的init()和Nib加载?  我认为我需要使用不同的initalizer,Swift是如何做到的?

1 个答案:

答案 0 :(得分:3)

这不是“斯威夫特”这样做的。这是UIViewController类的实现。 Objective-C也是如此。

首先阅读UIViewController init(nibName:bundle:)方法和nibName属性的文档。

来自nibName文档:

  

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

     
      
  1. 如果视图控制器类名以单词'Controller'结尾,就像在MyViewController中那样,它会查找名称与类名匹配的nib文件,而不是像'MyView.nib那样的单词'Controller'。 / p>

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

  4.   

基本上,在您的情况下,您使用默认初始化程序,这意味着您为笔尖名称指定了nil。因此,在运行时,将自动找到并使用您创建的与视图控制器类同名的nib。