У меня есть ViewController на моей раскадровке, которая работает как предупреждение (с заголовком, сообщением и двумя кнопками).Как инкапсулировать UIViewController (например, UIAlertController) в Swift?
Я хотел бы оформить его, чтобы иметь возможность использовать его в любом месте в своем коде, как это:
let alert = CustomAlertViewController(title: "Test", message: "message de test.", view: self.view, delegate: self)
self.present(alert, animated: false, completion: nil)
Моя проблема заключается в том, что IBOutlets не инициализирована ...
Мой CustomAlertViewController:
public protocol CustomAlertProtocol {
func alertAccepted()
}
class CustomAlertViewController: UIViewController {
var delegate :CustomAlertProtocol? = nil
var parentView :UIView?
var blurScreenshot :SABlurImageView?
var alertTitle :String? = nil
var alertMessage :String? = nil
@IBOutlet weak var oAlertView: UIView!
@IBOutlet weak var oAlertTitle: UILabel!
@IBOutlet weak var oAlertMessage: UILabel!
//MARK: - Main
public convenience init(title: String?, message: String?, view: UIView, delegate: CustomAlertProtocol) {
self.init()
self.alertTitle = title
self.alertMessage = message
self.delegate = delegate
self.parentView = view
}
override func viewDidLoad() {
oAlertTitle.text = self.alertTitle
oAlertMessage.text = self.alertMessage
}
@IBAction func onAcceptButtonPressed(_ sender: AnyObject) {
delegate?.alertAccepted()
}
}
Чтобы установить IBOutlets yo Вам нужно создать элемент управления view из сцены раскадровки или файла nib. Вам нужно будет создать функцию класса, которая делает это, а не используя Initializer. – Paulw11
My ViewController находится в моей раскадровке, и IBOutlets связаны. Если я создаю экземпляр с помощью storyboard.instantiateViewController, IBOutlets инициализируются – Will
Вправо. Поэтому создайте функцию класса, которая делает это – Paulw11