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
// 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
相关文章推荐
- 图片点击放大,再次点击返回原视图.完美封装,一个类一句代码即可调用.IOS完美实现
- 图片点击放大,再次点击返回原视图.完美封装,一个类一句代码即可调用.IOS完美实现
- 图片点击放大,再次点击返回原视图.完美封装,一个类一句代码即可调用.IOS完美实现
- 图片点击放大,再次点击返回原视图.完美封装,一个类一句代码即可调用.IOS完美实现
- 图片点击放大,再次点击返回原视图.完美封装,一个类一句代码即可调用.IOS完美实现
- iOS系统中XML&JSON解析的代码实现
- 一句代码搞定 Android 底部弹框
- iOS实现只有底部边框线的输入框示例代码
- iOS-封装FMDB框架:各用一句代码更新(添加&修改),查询,删除用户信息
- Android中封装RecyclerView实现添加头部和底部示例代码
- ios实现底部PopupWindow的示例代码(底部弹出菜单)
- iOS 一句代码轻松实现十六进制颜色(#开头)转RGB颜色
- iOS:一句代码实现文本输入的限制
- iOS开发学习--纯代码 UIScrollView 无限循环的实现——代码类封装
- IOS APP 国际化(实现不跟随系统语言,不用重启应用,代码切换stroyboard ,xib ,图片,其他资源)
- iOS封装浅谈-一句代码弹出actionSheet,如何优雅的设计一个ActionSheetManager
- iOS 关于引导页的工具类的封装 一句代码搞定引导页
- 【iOS开发-50】利用创建新的类实现代码封装,从而不知不觉实践一个简单的MVC实验,附带个动画
- iOS UITextField、UITextView只限输入中文、英文、数字及实时限制字符个数的封装实现代码
- ios开发——代码实现获得手机系统的名字和版本号&当前网络状态