iOS Swift通过xib(nib)文件初始化ViewController子类



我有一个基类

MyViewController: UIViewController

由MyViewController.xib初始化,带有一些出口。我只将MyViewController.xib中的File Owner类设置为MyViewController,在MyViewControlller.swift中没有任何init方法(都是从UIViewController继承的),下面的行正如预期的那样工作:

let vc = MyViewController()

视图属性已设置,出口已设置。

我希望将MyViewController:划分为子类

SecondViewController: MyViewController
{
    override init()
    {
        super.init()
    }
    required init?(coder aDecoder: NSCoder)
    {
        super.init(coder: aDecoder)
    }
}

现在我期待

let vc = SecondViewController()

将使用继承自MyViewController的视图和出口创建视图控制器,但vc中的所有出口都为零。看起来MyViewController.xib文件现在丢失了。我做错了什么?

您不能扩展xib文件。SecondViewController应该有自己的xib文件和自己的outlet。您可以在基类MyViewController中定义通用UI组件,并且对于您创建的每个xib,将UI组件直接链接到基类。例如,如果在所有视图控制器中都有一个通用的自定义后退按钮,请在基类中添加出口定义,并为每个xib文件添加UIButton并将其出口设置为基类。

最新更新