412
技術社區[雲棲]
Swift UI學習之UIAlertController(變得麻煩了)
在代碼中使用了UIAlertView,由於沒有智能的提示,編譯沒有問題,但當觸發時,就會崩潰,而且沒有
出現任何提示,不知道是什麼錯誤,大家如果遇到同樣的情況,就知道怎麼解決了。
這裏寫了一個擴展,這樣更方便使用了
import Foundation
import UIKit
extension UIAlertController {
class func showAlert(
presentController: UIViewController!,
title: String!,
message: String!,
cancelButtonTitle: String? = "cancel",
okButtonTitle: String? = "ok") {
let alert = UIAlertController(title: title!, message: message!, preferredStyle: UIAlertControllerStyle.Alert)
if cancelButtonTitle {
alert.addAction(UIAlertAction(title: cancelButtonTitle!, style: UIAlertActionStyle.Default, handler: nil))// do not handle cancel, just dismiss
}
if okButtonTitle {
alert.addAction(UIAlertAction(title: okButtonTitle!, style: UIAlertActionStyle.Default, handler: nil))// do not handle cancel, just dismiss
}
presentController!.presentViewController(alert, animated: true, completion: nil)
}
class func showAlert(
presentController: UIViewController!,
title: String!,
message: String!,
cancelButtonTitle: String? = "cancel",
okButtonTitle: String? = "ok",
okHandler: ((UIAlertAction!) -> Void)!) {
let alert = UIAlertController(title: title!, message: message!, preferredStyle: UIAlertControllerStyle.Alert)
if cancelButtonTitle {
alert.addAction(UIAlertAction(title: cancelButtonTitle!, style: UIAlertActionStyle.Default, handler: nil))// do not handle cancel, just dismiss
}
if okButtonTitle {
alert.addAction(UIAlertAction(title: okButtonTitle!, style: UIAlertActionStyle.Default, handler: okHandler))// do not handle cancel, just dismiss
}
presentController!.presentViewController(alert, animated: true, completion: nil)
}
}
調用來測試
func onButtonClick(sender: UIButton!) {
println("clicked button")
// UIAlertController.showAlert(self, title: "title", message: "message")
// UIAlertController.showAlert(self, title: "title", message: "message", cancelButtonTitle: "cancel", okButtonTitle: "ok")
UIAlertController.showAlert(self, title: "title", message: "message", cancelButtonTitle: "cancel", okButtonTitle: "ok", okHandler: {
(UIAlertAction) in
println("no nothing")
})
// do not use below
//alert.show()
// create UIAlertView
// let alertView = UIAlertView(title: "alertView", message: "clickedButton event", delegate: self, cancelButtonTitle: "cancel", otherButtonTitles: "ok")
// alertView.show()
}
最後更新:2017-04-03 07:56:58