UIAlertView
你應(yīng)該對它都是再熟悉不過的了蛾默,但是在iOS8 里已經(jīng)過期了滴铅,用來取代它的是UIAlertController
-展示action sheet和modal alert娱两。下面用swift帶著你從UIAlertView
轉(zhuǎn)變到UIAlertController
:
一司蔬、 創(chuàng)建一個(gè)新項(xiàng)目
啟動(dòng)Xcode6.3+,創(chuàng)建一個(gè)基于Single View Application template的項(xiàng)目
項(xiàng)目名AlertDemo, 設(shè)置語言為Swift簇秒,設(shè)置Devices為iPhone晶密,Next 選擇項(xiàng)目的存放地址擒悬,最后Create
打開Main.stroyboard, 添加一個(gè)Button,設(shè)置好居中約束(其實(shí)不設(shè)也沒有什么影響稻艰,只是可能位置會(huì)和預(yù)期的有偏差)懂牧,用來點(diǎn)擊顯示Alert
打開ViewController.swift,給stroyboard的Button拖線尊勿,添加 Touch Up Inside事件
@IBAction func showAlert(sender: AnyObject) {
}
二僧凤、 UIAlertView
初始化 UIAlertView
, 調(diào)用show()
@IBAction func showAlert(sender: AnyObject) {
let alertView = UIAlertView(title: "Hi UIAlertView", message: "are you okay?", delegate: self, cancelButtonTitle: "no", otherButtonTitles: "yes")
alertView.tag = 1
alertView.show()
}
設(shè)置 UIAlertView
的代理 UIAlertViewDelegate
import UIKit
class ViewController: UIViewController, UIAlertViewDelegate {
...
}
實(shí)現(xiàn)代理方法
func alertView(alertView: UIAlertView, clickedButtonAtIndex buttonIndex: Int) {
if alertView.tag == 1 {
if buttonIndex == 0 {
println(" ok")
} else {
println(" not okay")
}
}
三、UIAlertController
lalala.......重頭戲來了元扔, UIAlertController
的接口和 UIAlertView
非常不一樣, 不需要使用代理協(xié)議躯保,這樣我們只需要在 button的 action方法里面實(shí)現(xiàn)即可
@IBAction func showAlert(sender: AnyObject) {
//初始化 Alert Controller
let alertController = UIAlertController(title: "Hi alertController!", message: "are you okay", preferredStyle: .Alert)
//設(shè)置 Actions
let yesAction = UIAlertAction(title: "yes", style: .Default){ (action) -> Void in
println("ok!")
}
let noAction = UIAlertAction(title: "no", style: .Default){ (action) -> Void in
println("no!")
}
//添加 Actions,添加的先后和顯示的先后順序是有關(guān)系的
alertController.addAction(yesAction)
alertController.addAction(noAction)
//展示Alert Controller
self.presentViewController(alertController, animated: true, completion: nil)
}
初始化方法很簡單澎语,只要設(shè)置title途事,message還有preferredStyle(UIAlertControllerStyle.Alert
或者縮寫.Alert
;這個(gè)preferredStyle屬性是告訴系統(tǒng)當(dāng)前要展示的是一個(gè)Action Sheet .ActionSheet
或者modal alert .Alert
)
總結(jié)
雖然UIAlertView
和UIActionSheet
在iOS8已經(jīng)過期了擅羞,你仍然可以繼續(xù)使用尸变。UIAlertController
這個(gè)接口類是一個(gè)定義上的提升,它添加簡單减俏,展示Alert和ActionSheet使用統(tǒng)一的API召烂。因?yàn)?code>UIAlertController使UIViewController
的子類,他的API使用起來也會(huì)比較熟悉娃承!沒有騙你吧奏夫,很簡單的東西,你用一遍就會(huì)了的草慧,一起加油~