gpt4 book ai didi

ios - 如何在 Swift 中为 UIView 子类编写自定义初始化?

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

假设我想用 StringInt init 一个 UIView 子类。

如果我只是子类化 UIView,我该如何在 Swift 中执行此操作?如果我只是创建一个自定义的 init() 函数,但参数是一个 String 和一个 Int,它会告诉我“super.init() 在从初始化器返回之前没有被调用”。

如果我调用 super.init(),我会被告知必须使用指定的初始化程序。我应该在那里使用什么?框架版本?编码器版本?两个都?为什么?

最佳答案

init(frame:) 版本是默认初始化器。您必须仅在初始化实例变量后调用它。如果此 View 是从 Nib 重构的,则不会调用您的自定义初始化程序,而是调用 init?(coder:) 版本。由于 Swift 现在需要实现所需的 init?(coder:),我更新了下面的示例并将 let 变量声明更改为 var 和可选的。在这种情况下,您将在 awakeFromNib() 或稍后的某个时间初始化它们。

class TestView : UIView {
var s: String?
var i: Int?
init(s: String, i: Int) {
self.s = s
self.i = i
super.init(frame: CGRect(x: 0, y: 0, width: 100, height: 100))
}

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

关于ios - 如何在 Swift 中为 UIView 子类编写自定义初始化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24339145/

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