Я создал пользовательский UIView, покрытый UIButton. Но я не могу изменить свойство в другом классе

#swift

#swift

Вопрос:

 ㅣ [       ] ㅣ   
ㅣ [ image ] ㅣ
ㅣ [       ] ㅣ <- Cover the ButtonLabel

Я хочу, чтобы пользовательская кнопка выглядела так, как указано выше.
Поэтому я создал файлы .xib и .swift
и установил их следующим образом.
введите описание изображения здесь

И затем я пишу .swift

 class ImageLabelVerticalButtonView: UIView {
    private let xibName = "ImageLabelVerticalButtonView"

@IBOutlet weak var imageView: UIImageView!
@IBOutlet weak var btnTitle: UILabel!
@IBOutlet weak var btn: UIButton!

override init(frame: CGRect) {
    super.init(frame: frame)
    commonInit()
}

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

}

func commonInit() {
    let view = Bundle.main.loadNibNamed(xibName, owner: self, options: nil)!.first as! UIView
    view.frame = self.bounds
    view.backgroundColor = .yellow
    self.addSubview(view)

}

func setting(_ image: String, _ title: String) {
    self.imageView.image = UIImage(named: image)
    self.btnTitle.text = title
}
}
 

Затем я хочу использовать этот пользовательский вид в другом классе. поэтому я объявил это представление следующим образом.

 var imgLabelBtn: UIView = {
    let view = ImageLabelVerticalButtonView(frame: CGRect(x: 5, y: 5, width: 60, height: 80))
    view.setting("star_x1", "HaHa")
    return view
}()
 

Thread 1: Fatal error: Unexpectedly found nil while implicitly unwrapping an Optional value в строке setting() функции self.imageView.image = UIImage(named: image)

Что я неправильно установил функцию?

Комментарии:

1. Пробовали отлаживать проблему? Поместите точку останова в эту строку и посмотрите, что равно нулю. Я предполагаю, что UIImage(named:) для вас возвращается nil

2. Я пытаюсь изменить функцию setting() на setting(_ title: String) и применить ее. но заголовок не изменился…