UIAlertView、UIActionSheet、UIAlertController

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

你可能感兴趣的:(UIAlertView、UIActionSheet、UIAlertController)