iOS中 LGLAlertView 提示框的實例代碼
使用與iOS8 以后,只是把系統(tǒng)的UIAlertController進行了封裝,省的每次用的時候要寫很多的代碼。封裝后只需要一句代碼即可 , deome 地址
:https://github.com/liguoliangiOS/LGLAlertView.git
上代碼LGLAlertView.h:
#import <Foundation/Foundation.h> #import <UIKit/UIKit.h> typedef NS_ENUM(NSInteger, LGLAlertViewActionStyle) { LGLAlertViewActionStyleDefault = 0, LGLAlertViewActionStyleCancel, LGLAlertViewActionStyleDestructive }; /** alertView的回調(diào)block */ typedef void (^CallBackBlock)(NSInteger btnIndex); /** alertView的回調(diào)block */ typedef void (^TextFieldCallBackBlock)(NSString * text); @interface LGLAlertView : NSObject /** * 單個或者沒有按鈕 不執(zhí)行任何操作 只是提示總用 * @param title 提示的標題 * @param message 提示信息 * @param btnTitle 單個按鈕的標題名稱 * */ + (void)showAlertViewWith:(UIViewController *)viewController title:(NSString *)title message:(NSString *)message buttonTitle:(NSString *)btnTitle buttonStyle:(LGLAlertViewActionStyle)buttonStyle; /** * 有兩個或者多個按鈕 確定 取消 * @param title 提示的標題 * @param message 提示信息 * @param btnTitle 單個按鈕的標題名稱 * @param cancelButtonTitle 取消按鈕 * @param destructiveBtn destructiveBtn按鈕 * @param otherButtonTitles 確定按鈕 */ + (void)showAlertViewWith:(UIViewController *)viewController title:(NSString *)title message:(NSString *)message CallBackBlock:(CallBackBlock)textBlock cancelButtonTitle:(NSString *)cancelBtnTitle destructiveButtonTitle:(NSString *)destructiveBtnTitle otherButtonTitles:(NSString *)otherBtnTitles,...NS_REQUIRES_NIL_TERMINATION; /** * 有輸入框 確定 取消 (注: 這里只做了有一個輸入框) * @param title 提示的標題 * @param message 提示信息 * @param btnTitle 單個按鈕的標題名稱 * @param cancelButtonTitle 取消按鈕 * @param destructiveBtn destructiveBtn按鈕 * @param otherButtonTitles 確定按鈕 */ + (void)showAlertTextFieldViewWith:(UIViewController *)viewController title:(NSString *)title message:(NSString *)message TextFeildCallBackBlock:(TextFieldCallBackBlock)block cancelButtonTitle:(NSString *)cancelBtnTitle otherButtonTitles:(NSString *)otherBtnTitle; /** * 單個或者沒有按鈕ActionSheet 僅僅只是提示作用 按鈕沒有響應(yīng)事件 * @param title 提示的標題 * @param message 提示信息 * @param btnTitle 單個按鈕的標題名稱 * */ + (void)showAlertActionSheetViewWith:(UIViewController *)viewController title:(NSString *)title message:(NSString *)message buttonTitle:(NSString *)btnTitle buttonStyle:(LGLAlertViewActionStyle)buttonStyle; /** * 沒有按鈕ActionSheet 按鈕有響應(yīng)事件 * @param title 提示的標題 * @param message 提示信息 * @param btnTitle 單個按鈕的標題名稱 * */ + (void)showAlertActionSheetWith:(UIViewController *)viewController title:(NSString *)title message:(NSString *)message callbackBlock:(CallBackBlock)block destructiveButtonTitle:(NSString *)destructiveBtnTitle cancelButtonTitle:(NSString *)cancelBtnTitle otherButtonTitles:(NSString *)otherBtnTitles, ...NS_REQUIRES_NIL_TERMINATION; @end
LGLAlertView.m:文件
#import "LGLAlertView.h" #define LGLAlertShowTime 1.0 @implementation LGLAlertView // ======================================================================== ----- AlertView start----- ================================================================================== // 單個或沒有按鈕 + (void)showAlertViewWith:(UIViewController *)viewController title:(NSString *)title message:(NSString *)message buttonTitle:(NSString *)btnTitle buttonStyle:(LGLAlertViewActionStyle)buttonStyle { UIAlertController * alertController = [UIAlertController alertControllerWithTitle:title message:message preferredStyle:UIAlertControllerStyleAlert]; if (btnTitle.length) { UIAlertActionStyle actionStyle = (buttonStyle == LGLAlertViewActionStyleDefault) ? UIAlertActionStyleDefault : ((buttonStyle == LGLAlertViewActionStyleCancel) ? UIAlertActionStyleCancel : UIAlertActionStyleDestructive); UIAlertAction * alertAction = alertAction = [UIAlertAction actionWithTitle:btnTitle style:actionStyle handler:^(UIAlertAction * _Nonnull action) { [self performSelector:@selector(dismissAlertController:) withObject:alertController afterDelay:LGLAlertShowTime]; }];; [alertController addAction:alertAction]; [viewController presentViewController:alertController animated:YES completion:nil]; } else { [viewController presentViewController:alertController animated:YES completion:nil]; [self performSelector:@selector(dismissAlertController:) withObject:alertController afterDelay:LGLAlertShowTime]; } } // 單個或多個按鈕 + (void)showAlertViewWith:(UIViewController *)viewController title:(NSString *)title message:(NSString *)message CallBackBlock:(CallBackBlock)block cancelButtonTitle:(NSString *)cancelBtnTitle destructiveButtonTitle:(NSString *)destructiveBtnTitle otherButtonTitles:(NSString *)otherBtnTitles,... { UIAlertController * alertController = [UIAlertController alertControllerWithTitle:title message:message preferredStyle:UIAlertControllerStyleAlert]; //添加按鈕 if (cancelBtnTitle.length) { UIAlertAction * cancelAction = [UIAlertAction actionWithTitle:cancelBtnTitle style:UIAlertActionStyleCancel handler:^(UIAlertAction * _Nonnull action) { block(0); }]; [alertController addAction:cancelAction]; } if (destructiveBtnTitle.length) { UIAlertAction * destructiveAction = [UIAlertAction actionWithTitle:destructiveBtnTitle style:UIAlertActionStyleDestructive handler:^(UIAlertAction * _Nonnull action) { block(1); }]; [alertController addAction:destructiveAction]; } if (otherBtnTitles.length) { UIAlertAction *otherActions = [UIAlertAction actionWithTitle:otherBtnTitles style:UIAlertActionStyleDefault handler:^(UIAlertAction *action) { (!cancelBtnTitle.length && !destructiveBtnTitle.length) ? block(0) : (((cancelBtnTitle.length && !destructiveBtnTitle.length) || (!cancelBtnTitle.length && destructiveBtnTitle.length)) ? block(1) : block(2)); }]; [alertController addAction:otherActions]; va_list args; va_start(args, otherBtnTitles); if (otherBtnTitles.length) { NSString * otherString; int index = 2; (!cancelBtnTitle.length && !destructiveBtnTitle.length) ? (index = 0) : ((cancelBtnTitle.length && !destructiveBtnTitle.length) || (!cancelBtnTitle.length && destructiveBtnTitle.length) ? (index = 1) : (index = 2)); while ((otherString = va_arg(args, NSString*))) { index ++ ; UIAlertAction * otherActions = [UIAlertAction actionWithTitle:otherString style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) { block(index); }]; [alertController addAction:otherActions]; } } va_end(args); } [viewController presentViewController:alertController animated:YES completion:nil]; //如果沒有按鈕,自動延遲消失 if (!cancelBtnTitle.length && !destructiveBtnTitle.length && !otherBtnTitles) { //此時self指本類 [self performSelector:@selector(dismissAlertController:) withObject:alertController afterDelay:LGLAlertShowTime]; } } // 有輸入框 + (void)showAlertTextFieldViewWith:(UIViewController *)viewController title:(NSString *)title message:(NSString *)message TextFeildCallBackBlock:(TextFieldCallBackBlock)textBlock cancelButtonTitle:(NSString *)cancelBtnTitle otherButtonTitles:(NSString *)otherBtnTitle { UIAlertController * alertController = [UIAlertController alertControllerWithTitle:title message:message preferredStyle:UIAlertControllerStyleAlert]; [alertController addTextFieldWithConfigurationHandler:^(UITextField *textField) { }]; if (cancelBtnTitle.length) { UIAlertAction * cancelAction = [UIAlertAction actionWithTitle:cancelBtnTitle style:UIAlertActionStyleCancel handler:^(UIAlertAction *action) { [self dismissAlertController:alertController]; }]; [alertController addAction:cancelAction]; } if (otherBtnTitle.length) { UIAlertAction * otherAction = [UIAlertAction actionWithTitle:otherBtnTitle style:UIAlertActionStyleDefault handler:^(UIAlertAction *action) { textBlock([alertController.textFields firstObject].text); }]; [alertController addAction:otherAction]; } [viewController presentViewController:alertController animated:YES completion:nil]; //如果沒有按鈕,自動延遲消失 if (!cancelBtnTitle.length && !otherBtnTitle.length) { //此時self指本類 [self performSelector:@selector(dismissAlertController:) withObject:alertController afterDelay:LGLAlertShowTime]; } } // ======================================================================== ----- AlertView end----- ================================================================================== #pragma mark ==== 點擊事件 ====== + (void)dismissAlertController:(UIAlertController *)alert { [alert dismissViewControllerAnimated:YES completion:nil]; } // ======================================================================== -- ActionSheet Start -- ==================================================================================== + (void)showAlertActionSheetViewWith:(UIViewController *)viewController title:(NSString *)title message:(NSString *)message buttonTitle:(NSString *)btnTitle buttonStyle:(LGLAlertViewActionStyle)buttonStyle { UIAlertController * actionController = [UIAlertController alertControllerWithTitle:title message:message preferredStyle:UIAlertControllerStyleActionSheet]; if (btnTitle.length) { UIAlertActionStyle actionStyle = (buttonStyle == LGLAlertViewActionStyleDefault) ? UIAlertActionStyleDefault : ((buttonStyle == LGLAlertViewActionStyleCancel) ? UIAlertActionStyleCancel : UIAlertActionStyleDestructive); UIAlertAction * alertAction = alertAction = [UIAlertAction actionWithTitle:btnTitle style:actionStyle handler:^(UIAlertAction * _Nonnull action) { [self performSelector:@selector(dismissAlertController:) withObject:actionController afterDelay:LGLAlertShowTime]; }];; [actionController addAction:alertAction]; [viewController presentViewController:actionController animated:YES completion:nil]; } else { [viewController presentViewController:actionController animated:YES completion:nil]; //如果沒有按鈕,自動延遲消失 [self performSelector:@selector(dismissAlertController:) withObject:actionController afterDelay:LGLAlertShowTime]; } } + (void)showAlertActionSheetWith:(UIViewController *)viewController title:(NSString *)title message:(NSString *)message callbackBlock:(CallBackBlock)block destructiveButtonTitle:(NSString *)destructiveBtnTitle cancelButtonTitle:(NSString *)cancelBtnTitle otherButtonTitles:(NSString *)otherBtnTitles, ... { UIAlertController * actionController = [UIAlertController alertControllerWithTitle:title message:message preferredStyle:UIAlertControllerStyleActionSheet]; //添加按鈕 if (destructiveBtnTitle.length) { UIAlertAction *destructiveAction = [UIAlertAction actionWithTitle:destructiveBtnTitle style:UIAlertActionStyleDestructive handler:^(UIAlertAction * _Nonnull action) { block(0); }]; [actionController addAction:destructiveAction]; } if (cancelBtnTitle.length) { UIAlertAction *cancelAction = [UIAlertAction actionWithTitle:cancelBtnTitle style:UIAlertActionStyleCancel handler:^(UIAlertAction *action) { destructiveBtnTitle.length ? block(1) : block(0); }]; [actionController addAction:cancelAction]; } if (otherBtnTitles.length) { UIAlertAction *otherActions = [UIAlertAction actionWithTitle:otherBtnTitles style:UIAlertActionStyleDefault handler:^(UIAlertAction *action) { (!cancelBtnTitle.length && !destructiveBtnTitle.length) ? block(0) : (((destructiveBtnTitle.length && !cancelBtnTitle.length) || (!destructiveBtnTitle.length && cancelBtnTitle.length)) ? block(1) : block(2)); }]; [actionController addAction:otherActions]; va_list args; va_start(args, otherBtnTitles); if (otherBtnTitles.length) { NSString * otherString; int index = 2; (!cancelBtnTitle.length && !destructiveBtnTitle.length) ? (index = 0) : ((cancelBtnTitle.length && !destructiveBtnTitle.length) || (!cancelBtnTitle.length && destructiveBtnTitle.length) ? (index = 1) : (index = 2)); while ((otherString = va_arg(args, NSString*))) { index ++ ; UIAlertAction * otherActions = [UIAlertAction actionWithTitle:otherString style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) { block(index); }]; [actionController addAction:otherActions]; } } va_end(args); } [viewController presentViewController:actionController animated:YES completion:nil]; //如果沒有按鈕,自動延遲消失 if (!cancelBtnTitle.length && !destructiveBtnTitle.length && !otherBtnTitles.length) { //此時self指本類 [self performSelector:@selector(dismissAlertController:) withObject:actionController afterDelay:LGLAlertShowTime]; } } @end
以上所述是小編給大家介紹的iOS中 LGLAlertView 提示框的實例代碼,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
相關(guān)文章
iOS UICollectionView實現(xiàn)卡片效果
這篇文章主要為大家詳細介紹了iOS UICollectionView實現(xiàn)卡片效果,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2020-04-04詳解iOS之關(guān)于double/float數(shù)據(jù)計算精度問題
本篇文章主要介紹了iOS之關(guān)于double/float數(shù)據(jù)計算精度問題,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-02-02MAC 系統(tǒng)安裝java并配置環(huán)境變量
這篇文章主要介紹了MAC 系統(tǒng)安裝java并配置環(huán)境變量的相關(guān)資料,需要的朋友可以參考下2017-03-03iOS開發(fā)中UIDatePicker控件的使用方法簡介
這篇文章主要介紹了iOS開發(fā)中UIDatePicker控件的使用方法簡介,用來處理各種時間日期的選擇,需要的朋友可以參考下2015-11-11iOS中使用Fastlane實現(xiàn)自動化打包和發(fā)布
Fastlane是一套使用Ruby寫的自動化工具集,用于iOS和Android的自動化打包、發(fā)布等工作,可以節(jié)省大量的時間。下面給大家介紹ios fastlane 自動化打包和發(fā)布的安裝方法,需要的朋友參考下吧2017-05-05