gpt4 book ai didi

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

转载 作者:IT王子 更新时间:2023-10-29 04:57:36 27 4
gpt4 key购买 nike

很抱歉,如果之前有人问过这个问题,我已经搜索了很多,很多答案都来自早期的 Swift 测试版,当时情况有所不同。我似乎找不到明确的答案。

我想将 UIViewController 子类化,并有一个自定义初始化程序,以便我可以轻松地在代码中进行设置。我在 Swift 中遇到了麻烦。

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

我相信这是因为它在父类(super class)中用 required 关键字标记了吗?所以我必须在子类中做?我补充一下:

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

现在呢?我的特殊初始化器是否被认为是一个便利 初始化器?指定的?我调用 super 初始化程序吗?来自同一个类的初始化程序?

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

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

关于swift - 如何在 Swift 中为 UIViewController 子类创建自定义初始化程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26923003/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com