Итак, у меня есть основной 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
. Я также не знаю, правильно ли я делаю этот процесс создания пользовательского представления.