文档章节

UIAlertController的使用

_
 ___大黄蜂___
发布于 2016/07/23 23:27
字数 565
阅读 2
收藏 0

一、UIAlertController的使用

    从这个类的名字我们就可以看出,对于警示控件,设计的思路不再是View而是Controller。通过present和push进行呼出,而不是以前的show方法。另一个机制改变的地方是,其中按钮的触发方法不再通过代理处理,而是将按钮封装成了类:UIAlertAction。详细方法及使用如下:

UIAlertController * con = [UIAlertController alertControllerWithTitle:@"新的" message:@"看看样子" preferredStyle:UIAlertControllerStyleAlert]; [con addAction:[UIAlertAction actionWithTitle:@"仔细看" style:UIAlertActionStyleCancel handler:^(UIAlertAction * _Nonnull action) { //按钮触发的方法 }]]; [self presentViewController:con animated:YES completion:nil]; 上面的代码,会在屏幕上呼出警告框,如下:

初始化方法中的preferref参数是一个枚举,决定是提示框或者抽屉列表:

typedef NS_ENUM(NSInteger, UIAlertControllerStyle) { UIAlertControllerStyleActionSheet = 0,//抽屉 UIAlertControllerStyleAlert//警告框 } 上面的addAction方法添加了一个封装了方法的按钮,UIAlertAction类的构造十分简单,如下:

//初始化方法

  • (instancetype)actionWithTitle:(nullable NSString *)title style:(UIAlertActionStyle)style handler:(void (^ __nullable)(UIAlertAction *action))handler; //获取标题 @property (nullable, nonatomic, readonly) NSString *title; //获取风格 @property (nonatomic, readonly) UIAlertActionStyle style; //设置是否有效 @property (nonatomic, getter=isEnabled) BOOL enabled; AlertAction的风格是如下的枚举:

typedef NS_ENUM(NSInteger, UIAlertActionStyle) { UIAlertActionStyleDefault = 0,//默认的风格 UIAlertActionStyleCancel,//取消按钮的风格 UIAlertActionStyleDestructive//警告的风格 } 二、UIAlertController其他属性和方法

@property (nonatomic, readonly) NSArray<UIAlertAction *> *actions; 获取所有AlertAction

@property (nonatomic, strong, nullable) UIAlertAction *preferredAction NS_AVAILABLE_IOS(9_0); iOS9后新增加的属性,可以使某个按钮更加突出,只能设置已经在actions数组中的AkertAction,会使设置的按钮更加显眼,如下:

  • (void)addTextFieldWithConfigurationHandler:(void (^ __nullable)(UITextField *textField))configurationHandler; 添加一个textField,以前的相关控件,虽然也可以添加textField,但是定制化能力非常差,这个新的方法中有一个configurationHandler代码块,可以将textField的相关设置代码放入这个代码块中,并且这个方法添加的textField个数不再限制于2个: [con addTextFieldWithConfigurationHandler:^(UITextField * _Nonnull textField) { textField.placeholder=@"第1个"; }]; [con addTextFieldWithConfigurationHandler:^(UITextField * _Nonnull textField) { textField.placeholder=@"第2个"; }]; [con addTextFieldWithConfigurationHandler:^(UITextField * _Nonnull textField) { textField.placeholder=@"第3个"; }];

@property (nullable, nonatomic, readonly) NSArray<UITextField *> *textFields; 获取所有textField的数组

@property (nullable, nonatomic, copy) NSString *title; 设置警示控件的标题

@property (nullable, nonatomic, copy) NSString *message; 设置警示控件的信息

@property (nonatomic, readonly) UIAlertControllerStyle preferredStyle; 获取警示控件的风格

© 著作权归作者所有

共有 人打赏支持
_
粉丝 5
博文 26
码字总数 21716
作品 0
东城
IOS基础UI之(五)UIAlertView、UIActionSheet和UIAlertContro

IOS基础UI之(五)UIAlertView、UIActionSheet和UIAlertController详解 标签: iosUIAlertViewUIActionSheetUIAlertController 2015-09-20 11:58 340人阅读 评论(3) 收藏 举报 分类: IOS(UI基......

Bob_Zheng
2015/11/26
41
0
[Swift]UIKit学习之警告框:UIAlertController和UIAlertView

Important: UIAlertView is deprecated in iOS 8. (Note that UIAlertViewDelegate is also deprecated.) To create and manage alerts in iOS 8 and later, instead use UIAlertController ......

王永濤
2015/10/21
630
0
Arrors/AlertKit

#AlertKit Version 0.2.0 1 -> 解决了UIAlertController的布局问题 2 -> 修复了Add TextField时,回调的bug 3 -> 对action的enable仍不支持 Version 0.1.0 1 -> 使用Swift对UIAlertControll......

Arrors
2016/03/17
0
0
iOS9使用提示框的正确实现方式

在从iOS8到iOS9的升级过程中,弹出提示框的方式有了很大的改变,在Xcode7 ,iOS9.0的SDK中,已经明确提示不再推荐使用UIAlertView,而只能使用UIAlertController,我们通过代码来演示一下。 ...

海二少
2016/03/10
23
1
如何在没有视图View的情况下使用UIAlertController

一般UiAlertController在初始化完毕后需要一个试图控制器推出,但假如在例如appdelegate这种没有控制器的地方做了一个推送提示框,完全找不到展现的方式,曾经找到一个使用rootViewcontroller的...

JokerV
2015/08/14
52
0

没有更多内容

加载失败,请刷新页面

加载更多

70.shell的函数 数组 告警系统需求分析

20.16/20.17 shell中的函数 20.18 shell中的数组 20.19 告警系统需求分析 20.16/20.17 shell中的函数: ~1. 函数就是把一段代码整理到了一个小单元中,并给这个小单元起一个名字,当用到这段...

王鑫linux
今天
2
0
分布式框架spring-session实现session一致性使用问题

前言:项目中使用到spring-session来缓存用户信息,保证服务之间session一致性,但是获取session信息为什么不能再服务层获取? 一、spring-session实现session一致性方式 用户每一次请求都会...

WALK_MAN
今天
5
0
C++ yield()与sleep_for()

C++11 标准库提供了yield()和sleep_for()两个方法。 (1)std::this_thread::yield(): 线程调用该方法时,主动让出CPU,并且不参与CPU的本次调度,从而让其他线程有机会运行。在后续的调度周...

yepanl
今天
4
0
Java并发编程实战(chapter_3)(线程池ThreadPoolExecutor源码分析)

这个系列一直没再写,很多原因,中间经历了换工作,熟悉项目,熟悉新团队等等一系列的事情。并发课题对于Java来说是一个又重要又难的一大块,除非气定神闲、精力满满,否则我本身是不敢随便写...

心中的理想乡
今天
33
0
shell学习之获取用户的输入命令read

在运行脚本的时候,命令行参数是可以传入参数,还有就是在脚本运行过程中需要用户输入参数,比如你想要在脚本运行时问个问题,并等待运行脚本的人来回答。bash shell为此提 供了read命令。 ...

woshixin
今天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部