在编码过程中,我们经常遇到需要这样一个效果,就是弹出框的嵌套;

举个最简单的例子,比如你要选择时间,必然需要一个时间选择器DatePicker.但是这个选择器又是在你点击某按钮时弹出,弹出方式最常见的就是上拉菜单了,所以这就涉及了AlertController嵌入DatePicker;
因为前一篇我已经说过了,在IOS8之后,苹果已经废弃了actionSheet;那么我们就要重新来玩这个嵌套了.

那么我拿刚才写的一个小demo来说一下

#define BUTTONSIZE 40
// datePicker创建方法
- (void)creatDatePicker
{
self.datePicker = [[UIDatePicker alloc] initWithFrame:CGRectMake(0*WIDTH, 20*HEIGHT, 320*WIDTH, 216)];
NSLocale *locale = [[NSLocale alloc] initWithLocaleIdentifier:@"zh_CN"];
// 设置中文显示
self.datePicker.locale = locale;
// 设置时区
[self.datePicker setTimeZone:[NSTimeZone timeZoneWithName:@"GMT+0800"]];
// 设置当前显示时间
// 设置初始时间
[self.datePicker setDate:[NSDate date] animated:YES];
// 设置选择器类型
self.datePicker.datePickerMode = UIDatePickerModeDate;
[self.datePicker addTarget:self action:@selector(datePickerValueChanged:) forControlEvents:UIControlEventValueChanged];
}
- (void)datePickerValueChanged:(UIDatePicker*)datePicker
{ }
<pre name="code" class="objc">// 弹出上拉菜单
- (void)actionSheetShow
{
self.alertController = [UIAlertController alertControllerWithTitle:@"\n\n\n\n\n" message:@"\n\n\n\n\n\n" preferredStyle:UIAlertControllerStyleActionSheet];
// UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectMake(0, -20, 360, 316)];
// imageView.image = [UIImage imageNamed:@"SlotMachineBackground@2x.png"];
// [alertController.view addSubview:imageView];
UIImageView *imageView2 = [[UIImageView alloc] initWithFrame:CGRectMake(-10, -20, 385, 300)];
imageView2.image = [UIImage imageNamed:@"pickerBack.png"];
UIButton *sureButton = [self creatButtonWithFrame:CGRectMake(340, 5, 0.75 * BUTTONSIZE, 0.75 * BUTTONSIZE) action:@selector(dismissAlert:) image:[UIImage imageNamed:@"FBDsureImage"] title:nil];
sureButton.tag = 1000;
UIButton *errorButton = [self creatButtonWithFrame:CGRectMake(5, 5, 0.75 * BUTTONSIZE, 0.75 * BUTTONSIZE) action:@selector(dismissAlert:) image:[UIImage imageNamed:@"FBDerrorImage"] title:nil];
errorButton.tag = 1001;
[imageView2 addSubview:sureButton];
[imageView2 addSubview:errorButton];
imageView2.userInteractionEnabled = YES;
[self.alertController.view addSubview:imageView2];
[self.alertController.view addSubview:self.datePicker];
[self presentViewController:self.alertController animated:YES completion:nil];
}
// 创建button
- (UIButton *)creatButtonWithFrame:(CGRect)frame action:(SEL)sel image:(UIImage *)image title:(NSString *)title
{
UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
button.frame = frame;
[button addTarget:self action:sel forControlEvents:UIControlEventTouchUpInside];
[button setImage:image forState:UIControlStateNormal];
[button setTitle:title forState:UIControlStateNormal];
button.showsTouchWhenHighlighted = YES;
return button;
}

这样就实现了一个简单的AlertController嵌入DatePicker

版权声明:本文为博主原创文章,未经博主允许不得转载。

UIAlertController高级之嵌入其他控件 分类: ios技术 2015-02-02 11:58 96人阅读 评论(0) 收藏的更多相关文章

  1. StatusStrip 分类: C# 2015-07-23 11:58 2人阅读 评论(0) 收藏

    通过StatusStrip显示窗体状态栏 同时将状态栏分成三部分 居左边显示相关文字信息 中间空白显示 居右边显示时间信息 1.创建窗体及添加StatusStrip   默认StatusStrip名称 ...

  2. Javascript图片预加载详解 分类: JavaScript HTML+CSS 2015-05-29 11:01 768人阅读 评论(0) 收藏

    预加载图片是提高用户体验的一个很好方法.图片预先加载到浏览器中,访问者便可顺利地在你的网站上冲浪,并享受到极快的加载速度.这对图片画廊及图片占据很大比例的网站来说十分有利,它保证了图片快速.无缝地发布 ...

  3. 分类算法简介 分类: B10_计算机基础 2015-03-09 11:08 257人阅读 评论(0) 收藏

    一.决策树 决策树是用于分类和预测的主要技术之一,决策树学习是以实例为基础的归纳学习算法,它着眼于从一组无次序.无规则的实例中 推理出以决策树表示的分类规则.构造决策树的目的是找出属性和类别间的关系, ...

  4. MS SQLServer 批量附加数据库 分类: SQL Server 数据库 2015-07-13 11:12 30人阅读 评论(0) 收藏

    ************************************************************ * 标题:MS SQLServer 批量附加数据库 * 说明:请根据下面的注释 ...

  5. hdu 1057 (simulation, use sentinel to avoid boudary testing, use swap trick to avoid extra copy.) 分类: hdoj 2015-06-19 11:58 25人阅读 评论(0) 收藏

    use sentinel to avoid boudary testing, use swap trick to avoid extra copy. original version #include ...

  6. Design T-Shirt 分类: HDU 2015-06-26 11:58 7人阅读 评论(0) 收藏

    Design T-Shirt Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) T ...

  7. Makefile 入门与基本语法 分类: C/C++ ubuntu 2015-05-18 11:16 466人阅读 评论(0) 收藏

    在我看来,学会写简单的Makefile,阅读较复杂的makefile,是每一个Linux程序员都必须拥有的基本素质.Makefile可以自动识别哪些源文件被更改过,需要重新编译,那些不需要.从而节省大 ...

  8. jQuery中的on()和click()的区别 分类: 前端 HTML jQuery 2014-11-06 10:26 96人阅读 评论(0) 收藏

    HTML页面代码 <div> <h1>Click</h1> <button class="add">Click me to add ...

  9. 企业证书APP发布流程 分类: ios相关 app相关 2015-06-10 11:01 212人阅读 评论(0) 收藏

    企业发布app的 过程比app store 发布的简单多了,没那么多的要求,哈 但是整个工程的要求还是一样,比如各种像素的icon啊 命名规范啊等等. 下面是具体的流程 1.修改你的 bundle i ...

随机推荐

  1. HDU4325--Flowers--树状数组,离散化

    Description As is known to all, the blooming time and duration varies between different kinds of flo ...

  2. “玲珑杯”ACM比赛 Round #1 题解

    A:DESCRIPTION Eric has an array of integers a1,a2,...,ana1,a2,...,an. Every time, he can choose a co ...

  3. 河南多校大一训练赛 C 青蛙的约会

    题目链接:http://acm.hust.edu.cn/vjudge/contest/125004#problem/C 密码:acm Description 两只青蛙在网上相识了,它们聊得很开心,于是 ...

  4. HDU 2671 Can't be easier

    简单的几何题目 点(a,b)关于直线Ax+By+C=1对称点的公式 #include<cstdio> #include<cstring> #include<cmath&g ...

  5. HDU 3346 Lucky Number

    水题 #include<cstdio> #include<cstring> #include<cmath> #include<algorithm> us ...

  6. 格式化一个文件的大小(size),或者说是格式化一个app的大小(size)

    long number = 6243161; Formatter.formatFileSize(context, number): 需要导包,import android.text.format.Fo ...

  7. C# 经典入门12章-使用泛型-1

    aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAA8sAAAK5CAIAAAAHDiuGAAAgAElEQVR4nOyd9V9Uzfv/v3/J0t0N0p

  8. fragment 数据传递,通信

    Fragment之间的通信   在本节中,你会学到 1.定义接口 2.实现接口 3.将消息传递给fragment 为了重用Fragment UI 组件,在设计中你应该通过定义每一个fragemnt自己 ...

  9. 2016"百度之星" - 资格赛(Astar Round1) Problem A

    保存前缀乘,询问的时候输出c[ri]/c[li-1]即可,因为是除法,所以计算一下c[li-1]的逆元. #include <stdio.h> #include <math.h> ...

  10. CCS设计手段——相对定位

    1.认识相对定位 相对定位就是让元素相对自己原来的位置进行位置调整. 2.相对定位的本质特性 不脱标,老家留坑,形影分离. 3.用途 ①微调位置 ②做绝对定位的参考,子绝父相 4.相对定位的定位置 相 ...