首先,视图控制器必须得实现协议UIAlertViewDelegate中的方法,并指定delegate为self,才能使弹出的Alert窗口响应点击事件。
具体代码如下:
ViewController.h中的代码如下:
#import <UIKit/UIKit.h> @interface ViewController : UIViewController<UIAlertViewDelegate> @end
ViewController.m中的详细代码:
- (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view from its nib //初始化AlertView UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"AlertViewTest" message:@"message" delegate:self cancelButtonTitle:@"Cancel" otherButtonTitles:@"OtherBtn",nil]; //设置标题与信息,通常在使用frame初始化AlertView时使用 alert.title = @"AlertViewTitle"; alert.message = @"AlertViewMessage"; //这个属性继承自UIView,当一个视图中有多个AlertView时,可以用这个属性来区分 alert.tag = 0; //只读属性,看AlertView是否可见 NSLog(@"%d",alert.visible); //通过给定标题添加按钮 [alert addButtonWithTitle:@"addButton"]; //按钮总数 NSLog(@"number Of Buttons :%d",alert.numberOfButtons); //获取指定索引的按钮标题 NSLog(@"buttonTitleAtIndex1:%@",[alert buttonTitleAtIndex:1]); NSLog(@"buttonTitleAtIndex2:%@",[alert buttonTitleAtIndex:2]); //获取取消按钮的索引 NSLog(@"cancelButtonIndex:%d",alert.cancelButtonIndex); //获取第一个其他按钮的索引 NSLog(@"firstOtherButtonIndex:%d",alert.firstOtherButtonIndex); //显示AlertView [alert show]; [alert release]; } #pragma marks -- UIAlertViewDelegate -- //根据被点击按钮的索引处理点击事件 -(void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex { NSLog(@"clickButtonAtIndex:%d",buttonIndex); } //AlertView已经消失时执行的事件 -(void)alertView:(UIAlertView *)alertView didDismissWithButtonIndex:(NSInteger)buttonIndex { NSLog(@"didDismissWithButtonIndex"); } //ALertView即将消失时的事件 -(void)alertView:(UIAlertView *)alertView willDismissWithButtonIndex:(NSInteger)buttonIndex { NSLog(@"willDismissWithButtonIndex"); } //AlertView的取消按钮的事件 -(void)alertViewCancel:(UIAlertView *)alertView { NSLog(@"alertViewCancel"); } //AlertView已经显示时的事件 -(void)didPresentAlertView:(UIAlertView *)alertView { NSLog(@"didPresentAlertView"); } //AlertView即将显示时 -(void)willPresentAlertView:(UIAlertView *)alertView { NSLog(@"willPresentAlertView"); } - (void)viewDidUnload { [super viewDidUnload]; // Release any retained subviews of the main view. // e.g. self.myOutlet = nil; }