gpt4 book ai didi

swift - 如何在 Swift 中为 UIViewController 子类创建自定义初始值设定项?

转载 作者:行者123 更新时间:2023-11-30 13:04:42 30 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/39540119/

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