UIAlertController OC / Swift

OC

+ (void)showAlertWithTitle:(nullable NSString *)title;
+ (void)showAlertWithTitle:(nullable NSString *)title message:(nullable NSString *)message;
+ (void)showAlertWithTitle:(nullable NSString *)title message:(nullable NSString *)message cancelButtonTitle:(nullable NSString *)cancelButtonTitle;
+ (void)showAlertWithTitle:(nullable NSString *)title message:(nullable NSString *)message cancelButtonTitle:(nullable NSString *)cancelButtonTitle actionHandler:(nullable void (^)(NSInteger buttonIndex))actionHandler;
+ (void)showAlertWithTitle:(nullable NSString *)title message:(nullable NSString *)message cancelButtonTitle:(nullable NSString *)cancelButtonTitle otherButtonTitles:(nullable NSArray *)otherButtonTitles actionHandler:(nullable void (^)(NSInteger buttonIndex))actionHandler;



+ (void)showAlertWithTitle:(nullable NSString *)title
{
    [self showAlertWithTitle:title message:nil];
}

+ (void)showAlertWithTitle:(nullable NSString *)title message:(nullable NSString *)message
{
    [self showAlertWithTitle:title message:message cancelButtonTitle:nil];
}

+ (void)showAlertWithTitle:(nullable NSString *)title message:(nullable NSString *)message cancelButtonTitle:(nullable NSString *)cancelButtonTitle
{
    [self showAlertWithTitle:title message:message cancelButtonTitle:cancelButtonTitle actionHandler:nil];
}

+ (void)showAlertWithTitle:(nullable NSString *)title message:(nullable NSString *)message cancelButtonTitle:(nullable NSString *)cancelButtonTitle actionHandler:(nullable void (^)(NSInteger buttonIndex))actionHandler
{
    [self showAlertWithTitle:title message:message cancelButtonTitle:cancelButtonTitle otherButtonTitles:nil actionHandler:actionHandler];
}

+ (void)showAlertWithTitle:(nullable NSString *)title message:(nullable NSString *)message cancelButtonTitle:(nullable NSString *)cancelButtonTitle otherButtonTitles:(nullable NSArray *)otherButtonTitles actionHandler:(void (^)(NSInteger buttonIndex))actionHandler
{
    cancelButtonTitle = cancelButtonTitle ? cancelButtonTitle : @"取消";
    UIAlertController *alertController = [UIAlertController alertControllerWithTitle:title message:message preferredStyle:UIAlertControllerStyleAlert];
    
    __weak typeof(alertController) weakController = alertController;
    UIAlertAction *cancelAction = [UIAlertAction actionWithTitle:cancelButtonTitle style:UIAlertActionStyleCancel handler:^(UIAlertAction * _Nonnull action) {
        NSInteger index = [weakController.actions indexOfObject:action];
        if (actionHandler) {
            actionHandler(index);
        }
    }];
    [alertController addAction:cancelAction];
    
    for (NSString *title in otherButtonTitles) {
        UIAlertAction *action = [UIAlertAction actionWithTitle:title style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {
            if (actionHandler) {
                NSInteger index = [weakController.actions indexOfObject:action];
                actionHandler(index);
            }
        }];
        [alertController addAction:action];
    }
    
    UIViewController *curVC = [(UIWindow *)[UIApplication sharedApplication].keyWindow visibleViewController];
    [curVC presentViewController:alertController animated:YES completion:nil];
}

Swift

typealias action1Block = (() -> Void)?

typealias action2Block = (() -> Void)?

func showAlertViewWithOneContrl(_ alertInfo: (String?, String?, UIAlertController.Style),
                                action1info: (String, UIAlertAction.Style)?,
                                action1Block: action1Block) {
    showAlertViewWith(alertInfo, action1info: action1info, action2info: nil, action1Block: {
        if let ac1Block = action1Block {
            ac1Block()
        }
    }, action2Block: nil)
}


func showAlertViewWith(_ alertInfo: (String?, String?, UIAlertController.Style),
                       action1info: (String, UIAlertAction.Style)?,
                       action2info: (String, UIAlertAction.Style)?,
                       action1Block: action1Block,
                       action2Block: action2Block) {
    let alertViewController = UIAlertController(title: alertInfo.0, message: alertInfo.1, preferredStyle: alertInfo.2)
    if let infoLeft = action1info {
        let alertAction1 = UIAlertAction(title: infoLeft.0, style: infoLeft.1) { (action1) in
            if let ac1Block = action1Block {
                ac1Block()
            }
        }
        alertViewController.addAction(alertAction1)
    }
    if let infoRight = action2info {
        let alertAction2 = UIAlertAction(title: infoRight.0, style: infoRight.1) { (action2) in
            if let ac2Block = action2Block {
                ac2Block()
            }
        }
        alertViewController.addAction(alertAction2)
    }
    UIViewController.top()?.present(alertViewController, animated: true, completion: nil)
}
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末获印,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子凉倚,更是在濱河造成了極大的恐慌买置,老刑警劉巖备典,帶你破解...
    沈念sama閱讀 211,194評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡膏秫,警方通過查閱死者的電腦和手機,發(fā)現死者居然都...
    沈念sama閱讀 90,058評論 2 385
  • 文/潘曉璐 我一進店門做盅,熙熙樓的掌柜王于貴愁眉苦臉地迎上來缤削,“玉大人窘哈,你說我怎么就攤上這事⊥じ遥” “怎么了滚婉?”我有些...
    開封第一講書人閱讀 156,780評論 0 346
  • 文/不壞的土叔 我叫張陵,是天一觀的道長吨拗。 經常有香客問我满哪,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,388評論 1 283
  • 正文 為了忘掉前任谅摄,我火速辦了婚禮里逆,結果婚禮上,老公的妹妹穿的比我還像新娘像鸡。我一直安慰自己,他們只是感情好哈恰,可當我...
    茶點故事閱讀 65,430評論 5 384
  • 文/花漫 我一把揭開白布只估。 她就那樣靜靜地躺著,像睡著了一般着绷。 火紅的嫁衣襯著肌膚如雪蛔钙。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,764評論 1 290
  • 那天荠医,我揣著相機與錄音吁脱,去河邊找鬼。 笑死彬向,一個胖子當著我的面吹牛兼贡,可吹牛的內容都是我干的。 我是一名探鬼主播娃胆,決...
    沈念sama閱讀 38,907評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼遍希,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了里烦?” 一聲冷哼從身側響起凿蒜,我...
    開封第一講書人閱讀 37,679評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎胁黑,沒想到半個月后篙程,有當地人在樹林里發(fā)現了一具尸體,經...
    沈念sama閱讀 44,122評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡别厘,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,459評論 2 325
  • 正文 我和宋清朗相戀三年虱饿,在試婚紗的時候發(fā)現自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,605評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡氮发,死狀恐怖渴肉,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情爽冕,我是刑警寧澤仇祭,帶...
    沈念sama閱讀 34,270評論 4 329
  • 正文 年R本政府宣布,位于F島的核電站颈畸,受9級特大地震影響乌奇,放射性物質發(fā)生泄漏。R本人自食惡果不足惜眯娱,卻給世界環(huán)境...
    茶點故事閱讀 39,867評論 3 312
  • 文/蒙蒙 一礁苗、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧徙缴,春花似錦试伙、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,734評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至穿剖,卻和暖如春蚤蔓,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背糊余。 一陣腳步聲響...
    開封第一講書人閱讀 31,961評論 1 265
  • 我被黑心中介騙來泰國打工昌粤, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人啄刹。 一個月前我還...
    沈念sama閱讀 46,297評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像凄贩,于是被迫代替她去往敵國和親誓军。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 43,472評論 2 348