IOS开发基础篇之UIAlertView的使用

一句话显示提醒框

[[[UIAlertView alloc] initWithTitle:@"这是提示框的标题" message:@"这是提示框要显示的信息" delegate:self cancelButtonTitle:@"确定" otherButtonTitles:@"取消", nil] show];

效果如下


如上图所示,init方法中的参数各有对应。这里需要注意的是,参数中的cancelButtonTitle并不一定要写"取消",随需求所定。其实这句话涉及三个方法,alloc、initWith.... 、show

所以,可以先定义一个UIAlertView对象,再show也是可以的,后面会有代码。

另外,OtherButtonTitles对应的参数个数是不定的,就行NSLog中制定的参数不定一样,所以后面还可以加@"其他按钮",用逗号隔开,就像这样

[[[UIAlertView alloc] initWithTitle:@"这是提示框的标题" message:@"这是提示框要显示的信息" delegate:self cancelButtonTitle:@"确定" otherButtonTitles:@"取消", @"其他按钮",nil] show];

效果如下


UIAlertView默认超过三个按钮,就会如上图所示,变成纵向增加按钮


设置UIAlertView样式

代码如下

UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"这是提示框的标题" message:@"这是提示框要显示的信息" delegate:self cancelButtonTitle:@"确定" otherButtonTitles:@"取消", nil];
    [alert setAlertViewStyle:UIAlertViewStyleDefault];
    [alert show];

调用SetAlertViewStyle:方法就可以设置其样式,其参数是一个枚举,定义如下




UIAlertViewStyleDefault是默认样式,相当于没有指定样式。

UIAlertViewStyleSecureTextInput是密码输入框,效果如下



UIAlertViewStylePlainTextInput是普通文本输入框,效果如下


UIAlertViewStyleLoginAndPasswordInput顾名思义,就是文本框和密码框一起出现,一般用于用户名和密码


文本里面的提示也写得很清楚,第一个输用户名,第二个是密码



代理方法

一个比较实际的问题,就是要在按钮点击之后做些事情,这时就需要代理方法。

不过在此之前,需要让UIAlertView的代理遵守UIAlertViewDelegate协议:

还记得那个initWith...方法里面的delegate吗?那个就是指定UIAlertView的代理。

下面是一些代理方法


监听按钮点击事件代理


文档中写得很清楚,当View中的一个按钮点击的时候点击,这个方法结束后,view会自动消失。

这个方法中,后面的buttonIndex就表示点击按钮的索引,这个索引从0开始,不是按照显示的顺序计算的,是按照initWith...方法中的若干按钮title书写顺序计算的

可以打印出来看看效果

- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
{
    NSLog(@"点击了第%d个按钮",buttonIndex);
}


在这个方法里面,可以处理用户的点击事件


如何获取输入框中的内容呢?这个不是用代理方法,而是直接获取,接着在上面的代理方法写

- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
{
    NSLog(@"点击了第%d个按钮",buttonIndex);
    UITextField *textField1 = [alertView textFieldAtIndex:0];
    UITextField *textField2 = [alertView textFieldAtIndex:1];
    NSLog(@"用户名 : %@,密码 : %@",textField1.text,textField2.text);
}

先通过传进来的alertView获取其中的textField,在获取textField中的text,这里同样采取index的方式获取,文档中已写明


效果如下




不过有一个代理方法需要注意


文档中已经写明,这个方法不会在点击cancel按钮的时候调用,是在取消view的时候调用(比如用户按home键的时候),不过我试了下,就算是按home键也不会调用,望知道原因的指教。


还有一个代理方法可以监听按钮点击事件


这个代理方法同样可以监听点击事件,与前面ClickedButtonAtIndex的不同之处在于调用时机不同。可以用打印测试一下,前者在点击之后立即打印,而后者是在view伴随着动画效果消失后再调用的。







评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值