自封装UIAlert类:BlockAlertView

来源:互联网 发布:linux dns 添加mx记录 编辑:程序博客网 时间:2024/06/04 19:10

.h文件

typedef void (^blockAlertViewCallBackBlock)(int btnIndex);#import <Foundation/Foundation.h>@interface BlockAlertView : NSObject- (void)showAlertWithTitle:(NSString *)title msg:(NSString *)msg callbackBlock:(blockAlertViewCallBackBlock)block         cancelButtonTitle:(NSString *)cancelBtnTitle otherButtonTitles:(NSString *)otherButtonTitles, ... ;@end


.m文件

#import "BlockAlertView.h"@implementation BlockAlertView{    blockAlertViewCallBackBlock _callbackBlock;}- (void)dealloc{    [_callbackBlock release];    _callbackBlock = nil;        [super dealloc];}- (void)showAlertWithTitle:(NSString *)title msg:(NSString *)msg callbackBlock:(blockAlertViewCallBackBlock)block     cancelButtonTitle:(NSString *)cancelBtnTitle otherButtonTitles:(NSString *)otherButtonTitles, ... ;{    if (!block)    {        return;    }        _callbackBlock = nil;        //强引用    _callbackBlock = [block copy];        [self retain];        UIAlertView *alert = [[UIAlertView alloc] initWithTitle:title message:msg delegate:self cancelButtonTitle:cancelBtnTitle otherButtonTitles:nil];    if (otherButtonTitles)    {        [alert addButtonWithTitle:otherButtonTitles];        va_list args ;        va_start(args, otherButtonTitles);        NSString *title = nil;        while ((title = va_arg(args, NSString *)))        {            [alert addButtonWithTitle:title];        }        va_end(args);    }        [alert show];    [alert release];    alert = nil;}- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex;{    _callbackBlock(buttonIndex);        [self release];}@end

BlockAlertView类的使用方法:

BlockAlertView *blockAlert = [BlockAlertView new];                         [blockAlert showAlertWithTitle:@"标题" msg:@"内容" callbackBlock:^(int btnIndex){                                                          if (btnIndex == 0)                             {                                 return ;                             }                                                      } cancelButtonTitle:@"确定" otherButtonTitles: nil];                                                  [blockAlert release];