iOS Swift子类化由xib(nib)文件初始化的ViewController

Sha*_* Of 5 uiviewcontroller ios swift

我有一个基类

MyViewController: UIViewController
Run Code Online (Sandbox Code Playgroud)

由MyViewController.xib初始化,带有一些插座.我只在MyViewController.xib中设置了File Owner类,MyViewController.swift中MyViewController没有任何init方法(都继承自UIViewController),并且后续行正常工作:

let vc = MyViewController()
Run Code Online (Sandbox Code Playgroud)

查看属性设置,出口设置.

我想继承MyViewController:

SecondViewController: MyViewController
{
    override init()
    {
        super.init()
    }

    required init?(coder aDecoder: NSCoder)
    {
        super.init(coder: aDecoder)
    }
}
Run Code Online (Sandbox Code Playgroud)

现在我期待那条线

let vc = SecondViewController()
Run Code Online (Sandbox Code Playgroud)

将创建视图控制器,其中包含继承自的视图和插件MyViewController,但vc中的所有插件均为零.看起来现在错过了MyViewController.xib文件.我究竟做错了什么?

Hos*_*eeb 6

您无法扩展xib文件.它SecondViewController应该有自己的xib文件和自己的出口.您可以在基类中定义公共UI组件,MyViewController并为您创建的每个xib将ui组件直接链接到基类.例如,如果所有视图控制器中都有一个通用的自定义后退按钮,请在基类中添加插座定义,并为每个xib文件添加UIButton并将其插座设置为基类.

  • 在这种情况下,是的,您可以在基类中的代码中手动创建常见的UI内容,或者您​​可以在独立的xib文件中为不同的UIViewController创建并实例化并将其添加为子视图 (3认同)