应用中经常会用到Alert提示框,用来提示用户或者给用户一个确定选择的警告,比如注销用户中就会用到这一提示框,如下图:
做这种提示框也很简单,两行代码就可以:
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"" message:@"是否确定注销" delegate:self cancelButtonTitle:@"取消" otherButtonTitles:@"确定", nil];
[alert show];
几个参数都很明了,title是标题,这里没写,message是内容,delegate是委托,后面再说,紧跟着取消按钮的文字和其他按钮的文字,这里可以一直添加很多按钮,但常见的还是一个确定按钮吧。此外,取消按钮时可以不用的,比如在只需要提示用户一个信息而不需要用户做出选择的时候,可以把取消按钮的值设为nil,只写一个确定按钮的值。
刚才说到委托,委托的作用在于,当用户做出选择,比如注销时选择确定时,后续的注销操作代码就是写在委托里的,首先需要在.h文件中添加委托<UIAlertViewDelegate>,然后就可以在.m文件中写委托的后续操作了:
#pragma mark - UIAlertViewDelegate
- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex {
if (buttonIndex == 1) {//确定则注销
//注销操作的代码
}
}
这里判断了一下用户点击的按钮序号,序号0是之前的取消按钮,1就是跟着的确定按钮,如果还有其他按钮的话,则依次排序。还有一个问题,比如你在一个界面中有多处控件的操作用到了提示框,并且需要用户做出选择,在委托中,这里这判断了用户点击的是哪个按钮,并没有判断用户遇到的是哪个提示框,怎样相应地做出判断呢?在ios中,所有控件都可以设置Tag标签,我们可以根据这个标签来区分控件:
//注销用户回到登陆界面
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"" message:@"是否确定注销" delegate:self cancelButtonTitle:@"取消" otherButtonTitles:@"确定", nil];
[alert setTag:1];//设置tag以区分不同alert
[alert show];
#pragma mark - UIAlertViewDelegate
- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex {
if ([alertView tag] == 1) {
//来自注销用户的alert
if (buttonIndex == 1) {//确定则注销
[self dismissModalViewControllerAnimated:YES];
}
}
else if ([alertView tag] == 2) {
//其他提示框
}
}
基本上我目前遇到常见的Alert的使用情况都在这了,以后再遇见新的再添加吧~