所以我有一个主viewController视图,它有一个堆栈视图,我想向其中添加我创建的自定义视图的多个实例。
所以我的想法是创建一个继承自UIView. 我希望视图始终为 40x40,所以我创建了一个新的 init 来处理这个问题?(不确定这是否正确):
class QuickAddView: UIView {
@IBOutlet weak var iconLabel: UILabel!
var task: Task = Task()
public init(task: Task) {
self.task = task
super.init(frame: CGRect(x: 0, y: 0, width: 40, height: 40))
configureView()
}
private func configureView() {
self.layer.cornerRadius = self.frame.size.width / 2
self.backgroundColor = task.color
configureViewElements()
}
private func configureViewElements() {
configureIconLabel()
}
private func configureIconLabel() {
// CRASH: - iconLabel is nil here
self.iconLabel.text = task.icon
}
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
}
}
然后我有一个 QuickAddView 笔尖,将其自定义类设置为 QuickAddView.swift
最后,我在我的viewController:
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
configureViewElements()
}
private func configureViewElements() {
configureQuickAddStackView()
}
private func configureQuickAddStackView() {
let quickAddView = QuickAddView(task: Task(name: "Go to the store", icon: "", color: .purple))
quickAddStackView.addArrangedSubview(quickAddView)
}
我遇到的问题iconLabel是nil当我尝试设置我的QuickAddView. 我也不知道我是否正在做这个创建自定义视图的过程是否正确。