Я пытаюсь добавить подпредставление в представление, но после добавления кнопка в подпредставлении недоступна. Я проверил состояние кнопки, взаимодействие с пользователем включено. и после добавления подпредставления пользовательский интерфейс подпредставления отображается корректно.
Класс подпредставления:
class ErrorInfoView: UIView {
@IBOutlet var containerView: UIView!
@IBOutlet weak var messageLabel: UILabel!
var callback: (()->())?
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
commonInit()
}
override init(frame: CGRect) {
super.init(frame: frame)
commonInit()
}
func commonInit() {
Bundle.main.loadNibNamed("ErrorInfoView", owner: self, options: nil)
containerView.frame = self.bounds
containerView.autoresizingMask = [.flexibleWidth, .flexibleHeight]
containerView.backgroundColor = UIColor.clear
addSubview(containerView)
}
func configure(message: String, callback: @escaping ()->()) {
self.messageLabel.text = message
self.callback = callback
}
@IBAction func pressRetryButton(_ sender: UIButton) {
self.callback?()
}
}
Родительское представление:
let errorView = ErrorInfoView(frame: self.tableViewContainer.frame)
errorView.configure(message: error) {
// do something, but not be called
}
self.tableViewContainer.addSubview(errorView)
self.tableViewContainer.bringSubviewToFront(errorView)
errorView.translatesAutoresizingMaskIntoConstraints = false
let horizontalConstraint = errorView.centerXAnchor.constraint(equalTo: self.tableViewContainer.centerXAnchor)
let verticalConstraint = errorView.centerYAnchor.constraint(equalTo: self.tableViewContainer.centerYAnchor)
self.tableViewContainer.addConstraints([horizontalConstraint, verticalConstraint])