iOS实现模态对话框

iOS实现模态对话框

转载,以备不时之需


原文地址:

http://blog.csdn.net/xianpengliu/article/details/6591624


下面,封装一个类来实现这种简介的操作(代码摘自《iPhone开发秘籍》):

ModalAlert.h

#import <UIKit/UIKit.h>


@interface ModalAlert : NSObject
+ (BOOL) ask: (NSString *) question;
+ (BOOL) confirm:(NSString *) statement;
@end


@interface ModalAlertDelegate : NSObject <UIAlertViewDelegate>
{
CFRunLoopRef currentLoop;
NSUInteger index;
}
@property (readonly) NSUInteger index;
@end


ModalAlert.m


#import "ModalAlert.h"


@implementation ModalAlertDelegate
@synthesize index;


// Initialize with the supplied run loop
-(id) initWithRunLoop: (CFRunLoopRef)runLoop 
{
if (self = [super init]) currentLoop = runLoop;
return self;
}


// User pressed button. Retrieve results
-(void) alertView: (UIAlertView*)aView clickedButtonAtIndex: (NSInteger)anIndex 
{
index = anIndex;
CFRunLoopStop(currentLoop);
}
@end


@implementation ModalAlert
+(NSUInteger) queryWith: (NSString *)question button1: (NSString *)button1 button2: (NSString *)button2
{
CFRunLoopRef currentLoop = CFRunLoopGetCurrent();

// Create Alert
ModalAlertDelegate *madelegate = [[ModalAlertDelegate alloc] initWithRunLoop:currentLoop];
UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:question message:nil delegate:madelegate cancelButtonTitle:button1 otherButtonTitles:button2, nil];
[alertView show];

// Wait for response
CFRunLoopRun();

// Retrieve answer
NSUInteger answer = madelegate.index;
[alertView release];
[madelegate release];
return answer;
}


+ (BOOL) ask: (NSString *) question
{
return [ModalAlert queryWith:question button1: @"No" button2: @"Yes"];
}


+ (BOOL) confirm: (NSString *) statement
{
return [ModalAlert queryWith:statement button1: @"Cancel" button2: @"OK"];
}
@end


用法如下:

NSUInteger answer = [ModalAlert ask:@"Are you sure?"];


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值