UIAlertView
UIAlertView的使用:
//创建
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"标题" message:@"内容" delegate:self cancelButtonTitle:@"取消" otherButtonTitles:@"确定",@"其他", nil];
//显示
[alert show];
UIAlertViewDelegate中的常用方法:
/**
* 点击了按钮
*/
- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
{
}
UIAlertViewDelegate中的不常用方法:
/**
* 已经消失
*/
- (void)alertView:(UIAlertView *)alertView didDismissWithButtonIndex:(NSInteger)buttonIndex
{
}
/**
* 将要消失
*/
- (void)alertView:(UIAlertView *)alertView willDismissWithButtonIndex:(NSInteger)buttonIndex
{
}
/**
* willPresentAlertView:方法之后调用,返回YES:otherButtons中的第一个将可以使用,否则不能使用
*/
- (BOOL)alertViewShouldEnableFirstOtherButton:(UIAlertView *)alertView
{
return NO;
}
/**
* 已经显示
*/
- (void)didPresentAlertView:(UIAlertView *)alertView
{
}
/**
* 将要显示
*/
- (void)willPresentAlertView:(UIAlertView *)alertView
{
}
UIActionSheet
UIActionSheet的使用
UIActionSheet *sheet = [[UIActionSheet alloc] initWithTitle:@"标题" delegate:self cancelButtonTitle:@"取消" destructiveButtonTitle:@"确定" otherButtonTitles:nil, nil];
[sheet showInView:self.view];
//不会调用actionSheet:clickedButtonAtIndex:方法
//[sheet dismissWithClickedButtonIndex:1 animated:YES];
最常使用的代理方法
/**
* 点击了按钮,点击灰色区域也会调用,相当于点击了取消按钮
*/
- (void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex
{
}
不常使用的方法
/**
* 将要消失
*/
- (void)actionSheet:(UIActionSheet *)actionSheet willDismissWithButtonIndex:(NSInteger)buttonIndex
{
}
/**
* 已经消失
*/
- (void)actionSheet:(UIActionSheet *)actionSheet didDismissWithButtonIndex:(NSInteger)buttonIndex
{
}
/**
* 将要显示
*/
- (void)willPresentActionSheet:(UIActionSheet *)actionSheet
{
}
/**
* 已经显示
*/
- (void)didPresentActionSheet:(UIActionSheet *)actionSheet
{
}
UIAlertController
在iOS8以后,苹果推出了UIAlertController这个控制器来取代UIAlertView和UIActionSheet;
- UIAlertController的使用
//创建弹窗控制器
/**
* preferredStyle参数有两种,UIAlertControllerStyleActionSheet和UIAlertControllerStyleAlert
* UIAlertControllerStyleActionSheet 等同于 UIActionSheet
* UIAlertControllerStyleAlert 等同于 UIAlertView
*/
UIAlertController *alert = [UIAlertController alertControllerWithTitle:@"标题" message:@"信息" preferredStyle:UIAlertControllerStyleActionSheet];
- 添加按钮
//添加按钮
/**
* UIAlertActionStyleDefault 其他按钮
* UIAlertActionStyleCancel 取消按钮
* UIAlertActionStyleDestructive 确定按钮
*/
[alert addAction:[UIAlertAction actionWithTitle:@"取消" style:UIAlertActionStyleCancel handler:nil]];
[alert addAction:[UIAlertAction actionWithTitle:@"其他" style:UIAlertActionStyleDefault handler:nil]];
[alert addAction:[UIAlertAction actionWithTitle:@"确定" style:UIAlertActionStyleDestructive handler:^(UIAlertAction * _Nonnull action) {
//获取textField
//alert.textFields;
}]];
- 添加文本框
//添加文本框
//只有在preferredStyle是UIAlertControllerStyleAlert才可以添加文本框
[alert addTextFieldWithConfigurationHandler:^(UITextField * _Nonnull textField) {
//设置textField的属性
}];
- 显示弹窗
[self presentViewController:alert animated:YES completion:nil];
- 如果是UIAlertControllerStyleActionSheet模式,添加文本框会报错,报错信息
Text fields can only be added to an alert controller of style UIAlertControllerStyleAlert
网友评论