文档章节

UIAlertView、UIActionSheet、UIAlertController使用

AllenOR灵感
 AllenOR灵感
发布于 2017/09/10 01:18
字数 929
阅读 1
收藏 0
点赞 0
评论 0

(一)UIAlertView

1.默认样式

// UIAlertView iOS8开始 被废弃
- (void)defaultAlert
{
      // iOS8被废弃
    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:nil message:@"测试" delegate:self cancelButtonTitle:@"取消" otherButtonTitles:@"查看",@"评论", nil];
     // 因为是默认样式,所以这里可以不用写这句代码
    alert.alertViewStyle = UIAlertViewStyleDefault;

    [alert show];
}

// 需要遵守协议UIAlertViewDelegate来响应点击事件
#pragma mark - UIActionSheetDelegate
- (void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex
{
    NSLog(@"%ld",buttonIndex);
}

defaultAlert.gif


其中,"查看"的buttonIndex == 1,"评论"的buttonIndex == 2,"取消"的buttonIndex == 0

2.带有明文输入框

- (void)plainText
{
    // iOS8被废弃
    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:nil message:@"输入姓名" delegate:self cancelButtonTitle:@"取消" otherButtonTitles:@"确定", nil];
    alert.alertViewStyle = UIAlertViewStylePlainTextInput;
    [alert show];
}

#pragma mark - UIActionSheetDelegate
- (void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex
{
    NSLog(@"%ld",buttonIndex);
}

plainTextAlert.gif

3.带有密文输入框

- (void)secureText
{
    // iOS8被废弃
    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:nil message:@"输入姓名" delegate:self cancelButtonTitle:@"取消" otherButtonTitles:@"确定", nil];
    alert.alertViewStyle = UIAlertViewStyleSecureTextInput;
    [alert show];
}

#pragma mark - UIActionSheetDelegate
- (void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex
{
    NSLog(@"%ld",buttonIndex);
}

secureTextAlert.gif

4.带有登录和密码输入框

- (void)loginAndPassword
{
    // iOS8被废弃
    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:nil message:@"登录" delegate:self cancelButtonTitle:@"取消" otherButtonTitles:@"登录",@"注册", nil];
    alert.alertViewStyle = UIAlertViewStyleLoginAndPasswordInput;
    [alert show];
}

loginAndPwdTextAlert.gif

(二)UIActionSheet

- (void)actionSheet
{
    // iOS8被废弃
    UIActionSheet *sheet = [[UIActionSheet alloc] initWithTitle:nil delegate:self cancelButtonTitle:@"取消" destructiveButtonTitle:nil otherButtonTitles:@"查看",@"评论", nil];
    [sheet showInView:self.view];
}

#pragma mark - UIActionSheetDelegate
- (void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex
{
    NSLog(@"%ld",buttonIndex);
}

actionSheet.gif

(三)UIAlertController

UIAlertController从iOS8.0开始被使用。旨在替代UIAlertView和UIActionSheet这两个控件。
所以UIAlertController有一个preferredStyle属性属性,该属性是个UIAlertControllerStyle类型的枚举值,其值如下:

typedef NS_ENUM(NSInteger, UIAlertControllerStyle) {
    UIAlertControllerStyleActionSheet = 0,
    UIAlertControllerStyleAlert
} NS_ENUM_AVAILABLE_IOS(8_0);

不难发现,UIAlertControllerStyle的枚举值分别是UIAlertControllerStyleActionSheetUIAlertControllerStyleAlert,如果UIAlertController对象的preferredStyle属性取值为UIAlertControllerStyleActionSheet,那么其作用和效果就相当于iOS8中被废弃的UIActionSheet。
想反,如果UIAlertController对象的preferredStyle属性取值为UIAlertControllerStyleAlert,那么其作用和效果就相当于iOS8中被废弃的UIAlertView。
我们知道,使用UIAlertView和UIActionSheet需要遵守对应的协议并实现相应的方法,因为UIAlertView和UIActionSheet采用delegate的方式处理事件。而UIAlertController则采用灵活的block方式处理事件。所以使用UIAlertController不用再遵守某个协议,只需将响应事件的代码写在block中即可。这一点,让我们想起了NSURLConnection和NSURLsession。

1.UIAlertControllerStyleActionSheet样式

- (void)actionSheet {

    UIAlertController *actionSheetController = [UIAlertController alertControllerWithTitle:nil message:nil preferredStyle:UIAlertControllerStyleActionSheet];

    UIAlertAction *showAllInfoAction = [UIAlertAction actionWithTitle:@"查看" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {

    }];
    UIAlertAction *pickAction = [UIAlertAction actionWithTitle:@"评论" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {

    }];
    UIAlertAction *cancelAction = [UIAlertAction actionWithTitle:@"取消" style:UIAlertActionStyleCancel handler:^(UIAlertAction * _Nonnull action) {

    }];

    [actionSheetController addAction:cancelAction];
    [actionSheetController addAction:commentAction];
    [actionSheetController addAction:showAllInfoAction];

    [self presentViewController:actionSheetController animated:YES completion:nil];
}

actionSheetStyle.gif

2.UIAlertControllerStyleAlert样式

2.1.默认样式

    UIAlertController *actionSheetController = [UIAlertController alertControllerWithTitle:nil message:nil preferredStyle:UIAlertControllerStyleAlert];

    UIAlertAction *showAllInfoAction = [UIAlertAction actionWithTitle:@"查看" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {

    }];
    UIAlertAction *commentAction = [UIAlertAction actionWithTitle:@"评论" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {

    }];
    UIAlertAction *cancelAction = [UIAlertAction actionWithTitle:@"取消" style:UIAlertActionStyleCancel handler:^(UIAlertAction * _Nonnull action) {

    }];

    [actionSheetController addAction:cancelAction];
    [actionSheetController addAction:commentAction];
    [actionSheetController addAction:showAllInfoAction];

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

alertStyle.gif

文本框样式

- (void)alertStyleWithTextField
{
    UIAlertController *actionSheetController = [UIAlertController alertControllerWithTitle:nil message:@"输入姓名" preferredStyle:UIAlertControllerStyleAlert];
    [actionSheetController addTextFieldWithConfigurationHandler:^(UITextField * _Nonnull textField) {
        textField.placeholder = @"请输入姓名";
    }];

    UIAlertAction *determineAction = [UIAlertAction actionWithTitle:@"确定" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {

    }];

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

    }];

    [actionSheetController addAction:determineAction];
    [actionSheetController addAction:cancelAction];

    [self presentViewController:actionSheetController animated:YES completion:nil];
}

alertTextFieldStyle.gif

2.3.登录模式

- (void)alertStyleWithTwoTextField
{
    UIAlertController *actionSheetController = [UIAlertController alertControllerWithTitle:nil message:@"登录" preferredStyle:UIAlertControllerStyleAlert];
    [actionSheetController addTextFieldWithConfigurationHandler:^(UITextField * _Nonnull textField) {
        textField.placeholder = @"账号";
    }];
    [actionSheetController addTextFieldWithConfigurationHandler:^(UITextField * _Nonnull textField) {
        textField.placeholder = @"密码";
        textField.secureTextEntry = YES;
    }];

    UIAlertAction *determineAction = [UIAlertAction actionWithTitle:@"确定" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {

    }];

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

    }];

    [actionSheetController addAction:determineAction];
    [actionSheetController addAction:cancelAction];

    [self presentViewController:actionSheetController animated:YES completion:nil];
}

alertTwoTextFieldStyle.gif

demo地址: https://github.com/nlgb/AlertAndActionSheetDemo

文/VV木公子(简书作者)
PS:如非特别说明,所有文章均为原创作品,著作权归作者所有,转载转载请联系作者获得授权,并注明出处,所有打赏均归本人所有!

如果您是iOS开发者,或者对本篇文章感兴趣,请关注本人,后续会更新更多相关文章!敬请期待!

本文转载自:http://www.jianshu.com/p/85edffe95d2a

共有 人打赏支持
AllenOR灵感
粉丝 10
博文 2634
码字总数 82983
作品 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
UIAlertController的用法

1.我为什么要写这篇博客记录它? 答:因为 UIAlertView和UIActionSheet 被划线了 苹果不推荐我们使用这两个类了,也不再进行维护和更新,为了方便以后使用我来记录一下。如图所示正如苹果所说...

chen_gp_x
2017/03/19
0
0
iOS8统一的系统提示控件——UIAlertController

iOS8统一的系统提示控件——UIAlertController 一、引言 相信在iOS开发中,大家对UIAlertView和UIActionSheet一定不陌生,这两个控件在UI设计中发挥了很大的作用。然而如果你用过,你会发现这...

珲少
2015/10/17
5.4K
2
UIAlertController 简单使用

简介:UIAlertController 取代了 UIAlertView 和 UIActionSheet 使用: 声明: 添加项目: 展示: 含对话框的 设置颜色

程序猿-樱木花道
2016/06/29
35
0
IOS提示控件UIActionSheet,UIAlertView

iphone中常用的消息提示控件,就是UIActionSheet和UIAlertView了,在Web开发中,UIActionSheet就像是confirm(),而UIAlertView就像是alert()一样 UIActionSheet UIAlertView 但在iphone中,这...

长平狐
2012/10/25
153
0
类似 iOS alertView 弹窗组件--HDAlertView

HDAlertView是一个类似系统alertView弹窗。 系统自带UIAlertView有常见BUG, 比如和系统键盘动画冲突等等, 需要代理操作等诸多不方便使用.使用UIAlertController就不会有UIAlertView等等问题,...

小柒七
2016/09/01
368
0
iOS9使用提示框的正确实现方式

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

海二少
2016/03/10
23
1
Block Alerts and ActionSheets

实现各种各样的alert和 UIActionSheet和UIAlertView效果。比如,在UIAlertView中加入文字输入框,同时显示UIActionSheet和UIAlertView,显示多个UIAlertView等等。并且UIAlertView的出现和消...

匿名
2012/07/06
632
0
UIActionSheet&UIAlertView

UIActionSheet .h 文件 @interface ViewController : UIViewController<UIActionSheetDelegate> - (IBAction)ShowActionSheet:(id)sender; .m 文件 - (IBAction)ShowActionSheet:(id)sender......

微笑de辛翼
2013/01/10
0
1

没有更多内容

加载失败,请刷新页面

加载更多

下一页

IntelliJ IDEA 详细图解最常用的配置,适合刚刚用的新人。

刚刚使用IntelliJ IDEA 编辑器的时候,会有很多设置,会方便以后的开发,磨刀不误砍柴工。 比如:设置文件字体大小,代码自动完成提示,版本管理,本地代码历史,自动导入包,修改注释,修改...

kim_o
19分钟前
0
0
Google Java编程风格指南

目录 前言 源文件基础 源文件结构 格式 命名约定 编程实践 Javadoc 后记 前言 这份文档是Google Java编程风格规范的完整定义。当且仅当一个Java源文件符合此文档中的规则, 我们才认为它符合...

niithub
22分钟前
0
0
java.net.MalformedURLException异常说明

1.异常片段 Java代码中,在进行URL url = new URL(urllink)操作时,提示以下异常信息,该类异常主要问题出在参数urllink上面。 异常片段1 java.net.MalformedURLException at java.ne...

lqlm
22分钟前
0
0
CentOS7修改mysql5.6字符集

解决办法:CentOS7下修改MySQL数据库字符编码为UTF-8,UTF-8包含全世界所有国家所需要的字符集,是国际编码。 具体操作如下: 1.进入MySQL [root@tianqi-01 ~]# mysql -uroot -p Enter passw...

河图再现
23分钟前
0
0
DevExpress v18.1新版亮点——WPF篇(一)

用户界面套包DevExpress v18.1日前终于正式发布,本站将以连载的形式为大家介绍各版本新增内容。本文将介绍了DevExpress WPF v18.1 的新功能,快来下载试用新版本!点击下载>> Accordion Co...

Miss_Hello_World
26分钟前
0
0
Rancher 2.0集群与工作负载告警

Rancher 2.0操作指南。本文将step by step演示如何使用Rancher 2.0中集成的告警功能,包括设置通知程序、设置集群级别以及工作负载级别的告警。 在Rancher 1.x时期,告警功能是很多Rancher用...

RancherLabs
31分钟前
1
0
Python中字符串拼接的N中方法

python拼接字符串一般有以下几种方法: ①直接通过(+)操作符拼接 s = 'Hello'+' '+'World'+'!'print(s) 输出结果:Hello World! 使用这种方式进行字符串连接的操作效率低下,因为python中...

木头释然
32分钟前
9
0
JAVA排序之归并排序

归并排序思路就是不停拆分数组,直到拆成一个一个元素,之后将拆出来的元素按照拆分顺序反过来的顺序合并,出现前边值大于后边值,则换位置,放入临时数组,最后将临时数组覆盖原数组. public stat...

勤奋的蚂蚁
44分钟前
1
0
想要年薪20万,先看会不会这28个企业运维岗经典面试题

1、Linux如何挂载windows下的共享目录? mount.cifs //IP地址/server /mnt/server -o user=administrator,password=123456 linux 下的server需要自己手动建一个 后面的user与pass 是windows...

Py爱好
49分钟前
0
0
python的url分配

from django.conf.urls import url,include urlpatterns=[ url('xinwen/',include('xinwen.urls')) ] from django.urls import path from xinwen import views urlpatterns = [ path('login/......

南桥北木
52分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部