iOS8 中的UIAlertController

iOS 8.3 之后UIAlertView,跟UIActionSheet都不被推薦使用了靡砌,雖然一直知道如此扩然,但是因?yàn)槭掷锏睦洗a都是用的UIAlertView觅闽,所以從來沒真正使用過這個UIAlertController帝雇。今天寫一個Demo用到提示框,所以試一下蛉拙。

UIAlertController

跟UIAlertView相比尸闸,UIAlertController不再需要實(shí)現(xiàn)代理方法,也無需指定按鈕孕锄;創(chuàng)建方法:

//創(chuàng)建控制器
UIAlertController *alertVC = [UIAlertController alertControllerWithTitle:@"提示:" message:@"我是一條信息" preferredStyle:UIAlertControllerStyleActionSheet];

特別注意第三個參數(shù)室叉,它決定了樣式是對話框(alert)還是上拉菜單(actionSheet)。

創(chuàng)建好控制器之后硫惕,通過UIAlertAction來給控制器添加動作按鈕。

//創(chuàng)建動作按鈕:
UIAlertAction *action0 = [UIAlertAction actionWithTitle:@"OK" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {
        NSLog(@"OK  selected");
    }];
UIAlertAction *action1 = [UIAlertAction actionWithTitle:@"Cancel" style:UIAlertActionStyleCancel handler:^(UIAlertAction * _Nonnull action) {
        NSLog(@"Cancel selected");
    }];
//把按鈕添加到控制器
[alertVC addAction:action0];

動作按鈕樣式共三張:default野来,destructive恼除,cancel;值得注意的是如果控制器的樣式選擇了actionSheet曼氛,那么它的destructive按鈕永遠(yuǎn)在最前面豁辉,無論添加順序是怎樣的,cancel則永遠(yuǎn)都在最后舀患,而且只能有一個cancel類型的按鈕徽级。

如果你的程序是寫在iPhone上的,那么很不幸你基本跟下面的內(nèi)容失之交臂了聊浅,而下面的內(nèi)容才是真正有趣的部分

由于我寫demo的時候用的設(shè)備是iPad餐抢,所以當(dāng)我通過上面的代碼嘗試actionSheet樣式的時候,我遇到了這個錯誤:


屏幕快照 2016-01-20 23.11.51.png

那么這是怎么一回事呢低匙?原來旷痕,在常規(guī)寬度的設(shè)備上,上拉菜單是以彈出視圖的形式展現(xiàn)顽冶。彈出視圖必須要有一個能夠作為源視圖或者欄按鈕項(xiàng)目的描點(diǎn)(anchor point)欺抗。而iOS8 之后,新出了一個UIPopoverPresentationController類來替代之前的UIPopoverController强重。

UIPopoverPresentationController

給UIAlertController配置popoverPresentationController:

    UIPopoverPresentationController *popover = alertVC.popoverPresentationController;
    if (popover) {
        popover.sourceView = sender;
        popover.sourceRect = sender.bounds;
        popover.permittedArrowDirections = UIPopoverArrowDirectionAny;
    }
    
    [self presentViewController:alertVC animated:YES completion:nil];

iOS 8之后绞呈,我們不再需要給出彈出框的大小,UIAlertController將會根據(jù)設(shè)備大小自適應(yīng)彈出框的大小间景。并且在iPhone或者緊縮寬度的設(shè)備中它將會返回nil值佃声。

配置好了popoverPresentationController,無論是在iPhone還iPad上拱燃,都沒問題咯秉溉。

最后,UIAlertController的popoverPresentationController取消了Canle樣式的action,因?yàn)橛脩敉ㄟ^點(diǎn)擊彈出視圖外的區(qū)域也可以取消彈出視圖召嘶,因此不需要了父晶。

參考文章

我是源碼

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市弄跌,隨后出現(xiàn)的幾起案子甲喝,更是在濱河造成了極大的恐慌,老刑警劉巖铛只,帶你破解...
    沈念sama閱讀 217,734評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件埠胖,死亡現(xiàn)場離奇詭異,居然都是意外死亡淳玩,警方通過查閱死者的電腦和手機(jī)直撤,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,931評論 3 394
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來蜕着,“玉大人谋竖,你說我怎么就攤上這事〕邢唬” “怎么了蓖乘?”我有些...
    開封第一講書人閱讀 164,133評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長韧骗。 經(jīng)常有香客問我嘉抒,道長,這世上最難降的妖魔是什么袍暴? 我笑而不...
    開封第一講書人閱讀 58,532評論 1 293
  • 正文 為了忘掉前任些侍,我火速辦了婚禮,結(jié)果婚禮上政模,老公的妹妹穿的比我還像新娘娩梨。我一直安慰自己,他們只是感情好览徒,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,585評論 6 392
  • 文/花漫 我一把揭開白布狈定。 她就那樣靜靜地躺著,像睡著了一般习蓬。 火紅的嫁衣襯著肌膚如雪纽什。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,462評論 1 302
  • 那天躲叼,我揣著相機(jī)與錄音芦缰,去河邊找鬼。 笑死枫慷,一個胖子當(dāng)著我的面吹牛让蕾,可吹牛的內(nèi)容都是我干的浪规。 我是一名探鬼主播,決...
    沈念sama閱讀 40,262評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼探孝,長吁一口氣:“原來是場噩夢啊……” “哼笋婿!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起顿颅,我...
    開封第一講書人閱讀 39,153評論 0 276
  • 序言:老撾萬榮一對情侶失蹤缸濒,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后粱腻,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體庇配,經(jīng)...
    沈念sama閱讀 45,587評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,792評論 3 336
  • 正文 我和宋清朗相戀三年绍些,在試婚紗的時候發(fā)現(xiàn)自己被綠了捞慌。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,919評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡柬批,死狀恐怖卿闹,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情萝快,我是刑警寧澤,帶...
    沈念sama閱讀 35,635評論 5 345
  • 正文 年R本政府宣布著角,位于F島的核電站揪漩,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏吏口。R本人自食惡果不足惜奄容,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,237評論 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望产徊。 院中可真熱鬧昂勒,春花似錦、人聲如沸舟铜。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,855評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽谆刨。三九已至塘娶,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間痊夭,已是汗流浹背刁岸。 一陣腳步聲響...
    開封第一講書人閱讀 32,983評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留她我,地道東北人虹曙。 一個月前我還...
    沈念sama閱讀 48,048評論 3 370
  • 正文 我出身青樓迫横,卻偏偏與公主長得像,于是被迫代替她去往敵國和親酝碳。 傳聞我的和親對象是個殘疾皇子矾踱,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,864評論 2 354

推薦閱讀更多精彩內(nèi)容

  • iOS 8的新特性之一就是讓接口更有適應(yīng)性、更靈活击敌,因此許多視圖控制器的實(shí)現(xiàn)方式發(fā)生了巨大的變化介返。全新的UIPre...
    烏拉拉zzZ閱讀 931評論 0 2
  • iOS 8的新特性之一就是讓接口更有適應(yīng)性、更靈活沃斤,因此許多視圖控制器的實(shí)現(xiàn)方式發(fā)生了巨大的變化圣蝎。全新的UIPre...
    Tank丶Farmer閱讀 2,113評論 2 4
  • 轉(zhuǎn)載 http://www.cocoachina.com/ios/20141126/10320.html如果侵權(quán),...
    小劉_假裝是個程序員閱讀 646評論 0 0
  • 蘋果在iOS8.0后推出了UIAlertController以代替UIAlertView衡瓶,導(dǎo)致的后果就是UIAle...
    LZM輪回閱讀 2,369評論 6 0
  • (一) “sir徘公,叫我艾樂∠耄” “哦关面。” 那天我買了一個腎十厢,總算擁有了她等太,iphone 6s,我不再會為同學(xué)聚會之...
    大喵w閱讀 498評論 0 1