如何在Swift中为UIViewController子类创build自定义初始化程序?

如果之前已经问过这个问题,我已经search了很多东西,很多答案都是从早些时候的Swifttesting中发现的。 我似乎无法find明确的答案。

我想要UIViewController子类,并有一个自定义的初始化,以便我可以很容易地在代码中设置它。 我在Swift中遇到了麻烦。

我想要一个init()函数,我可以使用它来传递一个特定的NSURL然后使用视图控制器。 在我看来,它看起来像init(withImageURL: NSURL) 。 如果我添加该函数,然后要求我添加init(coder: NSCoder)函数。

我相信这是因为它在超类中使用required关键字进行标记? 所以我必须在子类中做到这一点? 我添加它:

 required init(coder aDecoder: NSCoder) { super.init(coder: aDecoder) } 

怎么办? 我的特殊初始化程序被认为是一个convenience吗? 指定的一个? 我是否要调用一个超级初始化程序? 来自同一个类的初始化器?

如何将我的特殊初始化程序添加到UIViewController子类?

 class ViewController: UIViewController { var imageURL: NSURL? // this is a convenient way to create this view controller without a imageURL convenience init() { self.init(imageURL: nil) } init(imageURL: NSURL?) { self.imageURL = imageURL super.init(nibName: nil, bundle: nil) } // if this view controller is loaded from a storyboard, imageURL will be nil /* Xcode 6 required init(coder aDecoder: NSCoder) { super.init(coder: aDecoder) } */ // Xcode 7 & 8 required init?(coder aDecoder: NSCoder) { super.init(coder: aDecoder) } } 

便捷初始化程序是次要的,支持一个类的初始化程序。 您可以定义一个便利初始值设定项,从与初始值设定项相同的类中调用指定的初始值设定项,并将某些指定的初始值设定项的参数设置为默认值。 您还可以定义一个便利初始值设定器,为特定用例或input值types创build该类的实例。

他们在这里logging 。