UIAlertViewController的使用

UIAlertViewController是苹果自带的信息提示框,仅在iOS8.0以后可以使用

NS_CLASS_AVAILABLE_IOS(8_0) @interface UIAlertController : UIViewController

下面是一个使用的简单例子:

    UIAlertController *alertController = [UIAlertController alertControllerWithTitle:@"提示" message:message preferredStyle:UIAlertControllerStyleAlert];

    UIAlertAction *cancelAction = [UIAlertAction actionWithTitle:@"取消" style:UIAlertActionStyleCancel handler:nil];
    UIAlertAction *okAction = [UIAlertAction actionWithTitle:@"好的" style:UIAlertActionStyleDestructive handler:nil];
    [alertController addAction:cancelAction];
    [alertController addAction:okAction];

    [self presentViewController:alertController animated:YES completion:nil];
UIAlertController的alertControllerWithTitle:message:preferredStyle:方法中有个样式参数:preferredStyle

此参数为枚举类型:

typedef NS_ENUM(NSInteger, UIAlertControllerStyle) {
    UIAlertControllerStyleActionSheet = 0,
    UIAlertControllerStyleAlert
} NS_ENUM_AVAILABLE_IOS(8_0);
UIAlertControllerStyleAlert:该样式与UIAlertView的样式一样,显示在屏幕中央。
UIAlertControllerStyleActionSheet:该样式显示在屏幕底部,自下而上推出。
UIAlertAction的actionWithTitle:style:handler:方法中也有一个样式参数叫做:style此参数为枚举类型:
typedef NS_ENUM(NSInteger, UIAlertActionStyle) {
    UIAlertActionStyleDefault = 0,
    UIAlertActionStyleCancel,
    UIAlertActionStyleDestructive
} NS_ENUM_AVAILABLE_IOS(8_0);

UIAlertActionStyleDefault是默认样式,白底黑字,响应touchUpInside事件。
UIAlertActionStyleCancel是取消样式,与UIAlertActionStyleDefault唯一的不同就是它的字体加粗了。
UIAlertActionStyleDestructive是具有警示性的样式,与UIAlertActionStyleDefault唯一的不同就是它的字体变为红色了。
有个问题:UIAlertController只能显示提示信息吗?如果是的话,为什么不继续使用UIAlertView?如果不是,那它还可以做什么?

答:不是。UIAlertController还可以添加文本输入框,与用户进行文本信息输入交互,而不再仅仅是输出给用户提示信息。接下来看一下一个简单的例子:

首先,将alertController声明为全局对象便于在整个类中使用
@interface ViewController ()

@property (nonatomic, strong) UIAlertController *alertController;

@end

  

接下来是实例化alertController

    self.alertController = [UIAlertController alertControllerWithTitle:@"提示" message:str preferredStyle:UIAlertControllerStyleAlert];

    [self.alertController addTextFieldWithConfigurationHandler:^(UITextField *textField){
        textField.placeholder = @"登录";
        [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(alertViewTextFieldDidChange:) name:UITextFieldTextDidChangeNotification object:textField];
    }];
    [self.alertController addTextFieldWithConfigurationHandler:^(UITextField *textField){
        textField.placeholder = @"密码";
        textField.secureTextEntry = YES;
    }];

    UIAlertAction *cancelAction = [UIAlertAction actionWithTitle:@"取消" style:UIAlertActionStyleCancel handler:nil];
    UIAlertAction *okAction = [UIAlertAction actionWithTitle:@"确定" style:UIAlertActionStyleDestructive handler:nil];
    [okAction setEnabled:NO];

    [self.alertController addAction:cancelAction];
    [self.alertController addAction:okAction];

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

  

较之前面的代码,这里多了两行代码:

    [self.alertController addTextFieldWithConfigurationHandler:^(UITextField *textField){
        textField.placeholder = @"登录";
        [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(alertViewTextFieldDidChange:) name:UITextFieldTextDidChangeNotification object:textField];
    }];
    [self.alertController addTextFieldWithConfigurationHandler:^(UITextField *textField){
        textField.placeholder = @"密码";
        textField.secureTextEntry = YES;
    }];

  

这两行代码就是在alertController中加入文本输入框,让用户输入必要信息,以便交互。其中给textField设置了placeholder和secureTextEntry,另外还添加了属性监听。

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

  

此处的监听事件会在文本框变化时触发,方法如下:

-(void)alertViewTextFieldDidChange:(NSNotification *)notification
{
    UITextField *textField = notification.object;
    UIAlertAction *action = self.alertController.actions[1];
    [action setEnabled:NO];
    if(textField.text.length>3)
    {
        NSLog(@"textField.text = %@",textField.text);
        [action setEnabled:YES];
    }
}

  

方法中通过:notification.object来获取到输入框,用于后续操作。



p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 20.0px Menlo; color: #00afca }
span.s1 { }

时间: 2024-11-07 04:16:09

UIAlertViewController的使用的相关文章

UIAlertView, UIAlertViewController

iOS 8的新特性之一就是让接口更有适应性.更灵活,因此许多视图控制器的实现方式发生了巨大的变化.全新的UIPresentationController 在实现视图控制器间的过渡动画效果和自适应设备尺寸变化效果(比如说旋转)中发挥了重要的作用,它有效地节省了程序员们的工作量(天地良心啊).还有,某 些旧的UIKit控件也同样发生了许多变化,比如说Alert Views.Action Sheets.Popovers以及Search Bar Controllers.本文将会对Alert Views和

swift学习之-- UIAlertViewController -alert

// //  ViewController.swift //  alertView // //  Created by su on 15/12/7. //  Copyright © 2015年 tian. All rights reserved. // import UIKit class ViewController: UIViewController {        var controller:UIAlertController!     override func viewDidLoa

UIAlertViewController+TextField 输入框

if (IOS8) { UIAlertController *alertController=[UIAlertController alertControllerWithTitle:CustomLocalizedString(@"SetIp", nil) message:@"" preferredStyle:UIAlertControllerStyleAlert]; [alertController addTextFieldWithConfigurationHand

iOS开发——UI篇Swift篇&玩转UItableView(一)基本使用

UItableView基本使用 1 class ListViewController: UIViewController , UITableViewDataSource, UITableViewDelegate { 2 3 //定义listTableView 输出口 4 @IBOutlet var listTableView : UITableView! 5 6 //定义数组 7 var items:[String] = ["UITableView高级使用", 8 "自定义U

[翻译] MSAlertController

MSAlertController You can use AlertController in iOS7!! 你可以在iOS中使用AlertController了 MSAlertController has same feature at UIAlertViewController. MSAlertController有着与UIAlertViewController一样的特性 Alert ActionSheet In addtion, customize font, font size and

关于__IPHONE_OS_VERSION_MAX_ALLOWED和__IPHONE_OS_VERSION_MIN_ALLOWED的用法

简单来说, 这些编译期常量, 对运行时的环境判断完全无效, 它告诉编译器用哪一段代码来进行编译, 那那段代码里, 你仍然可以写运行到目标机器里会崩溃的代码, 从stackoverflow里拷两段示例代码出来: 片段1, max: #if __IPHONE_OS_VERSION_MAX_ALLOWED >= 50000 //you can use iOS 5 APIs here because the SDK supports them //but the code may still crash

Swift完成UIAlertController的调用

iOS8中的UIAlertView和UIActionSheet已经都被UIAlertViewController代替了,所以,本篇blog就来探讨下如何用swift生成提示框. 我们先来看一下Apple的UIAlertController的文档: import Foundation import UIKit // // UIAlertController.h // UIKit // // Copyright (c) 2014 Apple Inc. All rights reserved. //

UIAlertView 的基本使用方法

?UIAlertView //注意,UIAlertView在9.0后丢弃了,使用UIAlertViewController 1.Title 获取或设置UIAlertView上的标题. 2.Message 获取或设置UIAlertView上的消息 UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"Title" message:@"message" delegate:self cancelButt

IOS 开发指南 第三章学习

1 uiwindow 的rootwiew决定了应用程序的类型 2 反映视图关系的3个属性 superview:有且仅有一个(除了uiwindow) subviews:子视图的集合 window:获得当前视图的uiwindow对象 3 按钮至少有两种:uibutton uibarbuttonitem 4 selector是一个指针变量,意思是将方法指定给控件去做 sender是事件源,指要使用这个方法的控件对象 5 使控件的事件与动作关联在一起 1)addTarget:action:forCont