iOS开发——UIAlertController

时间:2023-03-09 20:10:13
iOS开发——UIAlertController

  iOS8之后,UIAlertView和UIActionSheet被干掉了,取而代之的是UIAlertController和UIAlertAction。

  UIAlertController有两种样式,一个是UIAlertControllerStyleAlert,就是以前的UIAlertView,还有一个就是UIAlertControllerStyleActionSheet,也就是以前的UIActionSheet。UIAlertControllerStyleAlert模式中可以加输入框,UIAlertControllerStyleActionSheet不行。为了更像点样子,我设置文本框有输入才能点击确定。

  废话不多说,上代码:

//

//  ViewController.m

//  Demo-hehehe

//

//  Created by yyt on 16/4/21.

//  Copyright © 2016年 yyt. All rights reserved.

//

#import "ViewController.h"

@interface ViewController ()<UIAlertViewDelegate>

@property(nonatomic,strong) UITextField *myTextField;

@property(nonatomic,strong) UIAlertAction *otherAction;

@end

@implementation ViewController

- (void)viewDidLoad {

[super viewDidLoad];

UIButton *alertButton = [UIButton buttonWithType:UIButtonTypeSystem];

alertButton.frame = CGRectMake(40, 140, 200, 40);

alertButton.backgroundColor = [UIColor orangeColor];

[alertButton setTitle:@"AlertButton" forState:UIControlStateNormal];

[alertButton addTarget:self action:@selector(clickAlertButton:) forControlEvents:UIControlEventTouchUpInside];

[self.view addSubview:alertButton];

UIButton *actionSheetButton = [UIButton buttonWithType:UIButtonTypeSystem];

actionSheetButton.frame = CGRectMake(40, 200, 200, 40);

actionSheetButton.backgroundColor = [UIColor orangeColor];

[actionSheetButton setTitle:@"ActionSheetButton" forState:UIControlStateNormal];

[actionSheetButton addTarget:self action:@selector(clickActionSheetButton:) forControlEvents:UIControlEventTouchUpInside];

[self.view addSubview:actionSheetButton];

}

- (void)clickAlertButton:(UIButton*)sender {

UIAlertController *alertController = [UIAlertController alertControllerWithTitle:@"AlertButton" message:nil preferredStyle:UIAlertControllerStyleAlert];

UIAlertAction *cancelAction = [UIAlertAction actionWithTitle:@"Cancel" style:UIAlertActionStyleCancel handler:^(UIAlertAction *action) {

NSLog(@"11111");

}];

[alertController addAction:cancelAction];

UIAlertAction *otherAction = [UIAlertAction actionWithTitle:@"OK" style:UIAlertActionStyleDefault handler:^(UIAlertAction *action) {

NSLog(@"222222");

}];

self.otherAction = otherAction;

otherAction.enabled = NO;

[alertController addAction:otherAction];

[alertController addTextFieldWithConfigurationHandler:^(UITextField *textField) {

self.myTextField = textField;

textField.placeholder = @"必填";

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(handleTextFieldTextDidChangeNotification:) name:UITextFieldTextDidChangeNotification object:textField];

}];

[self presentViewController:alertController animated:YES completion:nil];

}

- (void)handleTextFieldTextDidChangeNotification:(NSNotification *)notification {

if(self.myTextField.text.length > 0) {

self.otherAction.enabled = YES;

} else {

self.otherAction.enabled = NO;

}

}

- (void)clickActionSheetButton:(UIButton*)sender {

UIAlertController *alertController = [UIAlertController alertControllerWithTitle:@"ActionSheet" message:nil preferredStyle:UIAlertControllerStyleActionSheet];

UIAlertAction *cancelAction = [UIAlertAction actionWithTitle:@"Cancel" style:UIAlertActionStyleCancel handler:^(UIAlertAction *action) {

NSLog(@"11111");

}];

[alertController addAction:cancelAction];

UIAlertAction *otherAction = [UIAlertAction actionWithTitle:@"OK" style:UIAlertActionStyleDefault handler:^(UIAlertAction *action) {

NSLog(@"222222");

}];

[alertController addAction:otherAction];

[self presentViewController:alertController animated:YES completion:nil];

}

@end