如何在Swift中为UIViewController子类创建自定义初始化器?

道歉如果这已被问过,我已经搜索了很多,许多答案是从早期的Swift betas,当事情不同。我似乎找不到一个确定的答案。

我想要子类化UIViewController,并有一个自定义初始化程序,以允许我在代码中轻松地设置它。我有困难在Swift中这样做。

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

我相信这是因为它在超类中标记了required关键字?所以我必须在子类中做它?我补充:

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

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

如何将我的特殊初始化程序添加到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)
    }
}

相关文章

软件简介:蓝湖辅助工具,减少移动端开发中控件属性的复制和粘...
现实生活中,我们听到的声音都是时间连续的,我们称为这种信...
前言最近在B站上看到一个漂亮的仙女姐姐跳舞视频,循环看了亿...
【Android App】实战项目之仿抖音的短视频分享App(附源码和...
前言这一篇博客应该是我花时间最多的一次了,从2022年1月底至...
因为我既对接过session、cookie,也对接过JWT,今年因为工作...