gpt4 book ai didi

swift - 我不知道在我的 UIView 子类的所需的 init?(coder) 方法中初始化我的变量

转载 作者:行者123 更新时间:2023-11-28 07:22:10 25 4
gpt4 key购买 nike

我想初始化我的 UIView 子类的 presenter 属性,我在我的 init 方法中执行它但是我在所需的 init 中出现错误“Property 'self.presenter' not initialized at super.init call”?(编码器)方法。

我不知道如何初始化它,因为我无法向所需的 init?(coder) 方法添加参数。

class HorizontalBarChart: UIView {
private var presenter: HorizontalBarChartPresenter

init(barHeight: CGFloat, spaceBetweenBars: CGFloat) {
self.presenter = HorizontalBarChartPresenter(barHeight: barHeight, spaceBetweenBars: spaceBetweenBars)
super.init(frame: CGRect.zero)
}

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

最佳答案

如果您的 UI 是在 Storyboard 或 Nib 文件中定义的,那么定义便利初始化器或覆盖现有初始化器不是解决方案。在这种情况下,您已经创建了一个将在“viewDidLoad”中调用的“配置”方法。

class HorizontalBarChart: UIView {

private var presenter: HorizontalBarChartPresenter

func configure(barHeight: CGFloat, spaceBetweenBars: CGFloat) {
self.presenter = HorizontalBarChartPresenter(barHeight: barHeight, spaceBetweenBars: spaceBetweenBars)
}
}

class CustomViewController: UIViewController {

@IBOutlet weak var horizontalBarChart: HorizontalBarChart

override func viewDidLoad() {
super.viewDidLoad()
horizontalBarChart.configure(barHeight: 100, spaceBetweenBars: 10)
}
}

关于swift - 我不知道在我的 UIView 子类的所需的 init?(coder) 方法中初始化我的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57748642/

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