#swift
#swift
Вопрос:
ㅣ [ ] ㅣ
ㅣ [ image ] ㅣ
ㅣ [ ] ㅣ <- Cover the Button
ㅣ Label ㅣ
Я хочу, чтобы пользовательская кнопка выглядела так, как указано выше.
Поэтому я создал файлы .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:)
для вас возвращается nil2. Я пытаюсь изменить функцию setting() на setting(_ title: String) и применить ее. но заголовок не изменился…