我的故事板中有一個ViewController,它的工作方式類似於一個警報(帶有標題,消息和兩個按鈕)。如何在Swift中封裝UIViewController(如UIAlertController)?
我想封裝它能夠在我的代碼的任何地方使用它,像這樣:
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喲您需要從故事板場景或筆尖文件創建視圖控制器。您將需要創建一個類功能來完成此操作,而不是使用初始化程序 – Paulw11
我的視圖控制器位於故事板中,並且IBOutlet已鏈接。如果我使用storyboard.instantiateViewController實例化IBOutlets被初始化 – Will
正確。所以創建一個類函數,這樣做 – Paulw11