使用与iOS8 以后,只是把系统的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的回调block */typedef void (^CallBackBlock)(NSInteger btnIndex);/** alertView的回调block */typedef void (^TextFieldCallBackBlock)(NSString * text);@interface LGLAlertView : NSObject/*** 单个或者没有按钮 不执行任何操作 只是提示总用* @param title 提示的标题* @param message 提示信息* @param btnTitle 单个按钮的标题名称**/+ (void)showAlertViewWith:(UIViewController *)viewController title:(NSString *)titlemessage:(NSString *)message buttonTitle:(NSString *)btnTitlebuttonStyle:(LGLAlertViewActionStyle)buttonStyle;/*** 有两个或者多个按钮 确定 取消* @param title 提示的标题* @param message 提示信息* @param btnTitle 单个按钮的标题名称* @param cancelButtonTitle 取消按钮* @param destructiveBtn destructiveBtn按钮* @param otherButtonTitles 确定按钮*/+ (void)showAlertViewWith:(UIViewController *)viewController title:(NSString *)title message:(NSString *)messageCallBackBlock:(CallBackBlock)textBlock cancelButtonTitle:(NSString *)cancelBtnTitledestructiveButtonTitle:(NSString *)destructiveBtnTitleotherButtonTitles:(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 *)messageTextFeildCallBackBlock:(TextFieldCallBackBlock)block cancelButtonTitle:(NSString *)cancelBtnTitleotherButtonTitles:(NSString *)otherBtnTitle;/*** 单个或者没有按钮ActionSheet 仅仅只是提示作用 按钮没有响应事件* @param title 提示的标题* @param message 提示信息* @param btnTitle 单个按钮的标题名称**/+ (void)showAlertActionSheetViewWith:(UIViewController *)viewController title:(NSString *)title message:(NSString *)messagebuttonTitle:(NSString *)btnTitle buttonStyle:(LGLAlertViewActionStyle)buttonStyle;/*** 没有按钮ActionSheet 按钮有响应事件* @param title 提示的标题* @param message 提示信息* @param btnTitle 单个按钮的标题名称**/+ (void)showAlertActionSheetWith:(UIViewController *)viewController title:(NSString *)title message:(NSString *)messagecallbackBlock:(CallBackBlock)block destructiveButtonTitle:(NSString *)destructiveBtnTitlecancelButtonTitle:(NSString *)cancelBtnTitleotherButtonTitles:(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 提示框的实例代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对武林网网站的支持!
新闻热点
疑难解答