您的位置:首页 > 移动开发 > IOS开发

iOS系统弹框封装 一句代码实现中间和底部弹框

2017-12-11 16:06 477 查看
//

//  ZFSAlertView.h

//  test

//

//  Created by HandsomeC on 2017/12/11.

//  Copyright © 2017年 赵发生. All rights reserved.

//

#import <UIKit/UIKit.h>

typedef NS_ENUM(NSInteger,ZFSAlertViewStyle) {

ZFSAlertViewAlert =
0,//中间弹框

ZFSAlertViewSheet,//底部弹框

};

typedef void (^clickBlock)(NSInteger itemIndex);

@interface ZFSAlertView :
UIView

/*

 

 调用的时候回调实在闭包里面,请注意避免循环引用

 

 */

/**

 弹框封装

 @param title 标题

 @param message 信息

 @param cancelTitle 取消按钮文字

 @param actionsArr 按钮数组

 @param style 弹框类型(中间或者是底部)

 @param controller 弹出视图的父视图

 @param itemBlock 回调

 */

+ (void)AlertViewWithTitle:(NSString *)title message:(NSString *)message cancelTitle:(NSString *)cancelTitle acitons:(NSArray
*)actionsArr style:(ZFSAlertViewStyle)style inView:(UIViewController*)controller itemblock:(clickBlock)itemBlock;

@end

//

//  ZFSAlertView.m

//  test

//

//  Created by HandsomeC on 2017/12/11.

//  Copyright © 2017年 赵发生. All rights reserved.

//

#import "ZFSAlertView.h"

@implementation ZFSAlertView

/*

 回调为零默认为取消按钮

 */

+ (void)AlertViewWithTitle:(NSString *)title message:(NSString *)message cancelTitle:(NSString *)cancelTitle acitons:(NSArray
*)actionsArr style:(ZFSAlertViewStyle)style inView:(UIViewController*)controller itemblock:(clickBlock)itemBlock{

UIAlertControllerStyle alertStyle;

if (!style) {

alertStyle =
UIAlertControllerStyleAlert;

}else{

alertStyle =
UIAlertControllerStyleActionSheet;

}

UIAlertController *alertController = [UIAlertController
alertControllerWithTitle:title message:message
preferredStyle:alertStyle];

[alertController
addAction:[UIAlertAction
actionWithTitle:cancelTitle.length >
0? cancelTitle:@"取消"
style:UIAlertActionStyleCancel
handler:^(UIAlertAction *
_Nonnull action) {

itemBlock(0);//取消返回0值

}]];

for (NSInteger i =
0; i < actionsArr.count; i++) {

[alertController
addAction:[UIAlertAction
actionWithTitle:actionsArr[i] style:UIAlertActionStyleDefault
handler:^(UIAlertAction *
_Nonnull action) {

itemBlock(i+1);

}]];

}

[controller
presentViewController:alertController animated:YES
completion:nil];

}

@end
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐