#import <UIKit/UIKit.h>
@protocol CustomAlertViewDelagate <NSObject>
// 返回值 是 是否点击完 按钮之后 需要消失AlertView
- (BOOL)clickAlertView:(id)alertView clickedButtonAtIndex:(NSInteger)buttonIndex;
@end
@interface CustomAlertView : UIAlertView
@end
</pre><pre name="code" class="objc">
</pre><pre name="code" class="objc">
#import "CustomAlertView.h"
</pre><pre name="code" class="objc">@implementation CustomAlertView
id<CustomAlertViewDelagate> customDelegate;
-(instancetype)initWithTitle:(NSString *)title message:(NSString *)message delegate:(id)delegate cancelButtonTitle:(NSString *)cancelButtonTitle otherButtonTitles:(NSString *)otherButtonTitles, ...
{
va_list args;
va_start(args, otherButtonTitles);
NSMutableArray *titles = [NSMutableArray arrayWithCapacity:1];
if (otherButtonTitles) {//获取可变参数
NSString *tmpstr ;
while ((tmpstr = va_arg(args, NSString*))) {
[titles addObject:tmpstr];
}
va_end(args);
}
customDelegate = delegate;
self = [super initWithTitle:title message:message delegate:nil cancelButtonTitle:cancelButtonTitle otherButtonTitles:otherButtonTitles,nil];
for (int i= 0; i<titles.count; i++) {
NSString *t = [titles objectAtIndex:i];
[self addButtonWithTitle:t];
}
return self;
}
-(void)dismissWithClickedButtonIndex:(NSInteger)buttonIndex animated:(BOOL)animated
{
if ([customDelegate respondsToSelector:@selector(clickAlertView:clickedButtonAtIndex:)]) {
BOOL isDismiss =[customDelegate clickAlertView:self clickedButtonAtIndex:buttonIndex];
if (isDismiss) {
[super dismissWithClickedButtonIndex:buttonIndex animated:animated];
}
}
else
{
[super dismissWithClickedButtonIndex:buttonIndex animated:animated];
}
}
Demo地址 http://download.csdn.net/detail/fhongchan/9207097