UIalertController日期控件

效果图

思路是依靠 UIalertController的高度是由内容判定,修改其view 即可

首先不需要改变该类的初始化(因为只是修改其view的界面)

继承UIalertController的.h文件

#import <UIKit/UIKit.h>
typedef void(^BlockDate)(id date);
@interface SheetDate : UIAlertController

@property(nonatomic,copy)BlockDate blockDate;
@property(retain,nonatomic)UIDatePicker* datePicker;

-(NSString*)dealDate;
-(void)addDatePicker;

@end

继承UIalertController的.m文件

#import "SheetDate.h"

@interface SheetDate ()
@end

@implementation SheetDate

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view from its nib.
}

- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}
/**
 *  添加日期控件
 */
-(void)addDatePicker
{
        self.datePicker = [[UIDatePicker alloc] initWithFrame:CGRectMake(0, 0, 320, 216)];
        self.datePicker.datePickerMode = UIDatePickerModeDate;
        self.datePicker.locale = [[NSLocale alloc] initWithLocaleIdentifier:@"zh_CN"];
        [self.view addSubview:self.datePicker];

}
/**
 *  处理日期数据
 *
 *  @return
 */
-(NSString*)dealDate
{
    NSDateFormatter * formatter = [[NSDateFormatter alloc ] init];
    if (self.datePicker.datePickerMode==UIDatePickerModeTime)
    {
        [formatter setDateFormat:@"HH:ss"];
    }
    else
    {
        [formatter setDateFormat:@"YYYY-MM-dd"];
    }

    NSString* currentTime = [formatter stringFromDate:self.datePicker.date];
    return currentTime;

}

然后是使用

/**
 *  日期/时间选择
 *
 *  @param sender
 */
- (IBAction)chooseDate:(UIButton *)sender
{
    SheetDate* sheetDate=[SheetDate alertControllerWithTitle:nil
                                                     message:@"\n\n\n\n\n\n\n\n\n\n"
                                              preferredStyle:(UIAlertControllerStyleActionSheet)];
    [sheetDate addDatePicker];
    sheetDate.blockDate=^(NSString* date)
    {
        [sender setTitle:date
                forState:(UIControlStateNormal)];

    };
    //开始时间,结束时间
    if (sender.tag==70||sender.tag==71)
    {
        sheetDate.datePicker.datePickerMode=UIDatePickerModeTime;
    }
    UIAlertAction* ok=[UIAlertAction actionWithTitle:@"确定"
                                               style:(UIAlertActionStyleDefault)
                                             handler:^(UIAlertAction * __nonnull action)
    {
        sheetDate.blockDate([sheetDate dealDate]);

    }];
    [sheetDate addAction:ok];
    [self presentViewController:sheetDate
                       animated:YES
                     completion:nil];

首先使用系统的方法创建uialertcontroller对象,使用\n是因为需要扩大显示的高度,然后调用[sheetDate addDatePicker]添加自定义界面,根据情况初始化使用日期数据的block

然后在sheet的选项中触发就可以了。

时间: 2024-08-10 16:45:07

UIalertController日期控件的相关文章

python selenium 处理时间日期控件(十五)

测试过程中经常遇到时间控件,需要我们来选择日期,一般处理时间控件通过层级定位来操作或者通过调用js来实现. 1.首先我们看一下如何通过层级定位来操作时间控件. 通过示例图可以看到,日期控件是无法输入日期,点击后弹出日期列表供我们选择日期,自己找了一个日期控制演示一下,通过两次定位,选择了日期 #-*- coding:utf-8 -*- import time from selenium import webdriver driver = webdriver.Chrome() driver.get

ux.form.field.GridDate 支持快速选择日期的日期控件

效果如图,亲测6.2.1版本可用 1 /** 2 *支持快速选择日期的日期控件 3 */ 4 Ext.define('ux.form.field.GridDate', { 5 extend: 'Ext.form.field.Date', 6 alias: 'widget.gridDateField', 7 requires: ['ux.picker.GridDate'], 8 pickerGrid: { 9 store: { 10 //默认配置 11 data: [{ 12 value: 30,

selenium webdriver自动化对日期控件的处理

用JS去掉日期输入框的readOnly属性. 代码如下: ------------------------------------------------------------------------------------- String js="document.getElementById('dateTimeId').removeAttribute('readOnly');document.getElementById('dateTimeId').setAttribute('value'

[整理]通过AngularJS directive对bootstrap日期控件的的简单包装

最近项目上了AngularJS,而原来使用的日期控件的使用方式也需要改变,于是开始了倒腾,看来写官方的例子,可以使用AngularJS的directive做简单的处理,这样在html里直接使用申明的的形式即可使用了. <!doctype html> <html ng-app="datepickerApp"> <head> <link type="text/css" rel="stylesheet" hre

mui 时间日期控件(浏览器上无法查看,在手机端可以点击)

<head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" /> <title></title> <link href="css/mui.mi

12 Python+selenium对日期控件进行处理(采用执行JS脚本)

[环境信息] Python34+IE+windows2008 [说明] 1.对于日期控件,没有办法通过定位元素再直接传值的方式处理.可以采用执行JavaScript处理. PS:还要去学学js怎么写,不然要用的时候就只有到处copy了. [示例] 1.对于如下格式的日期控件需要用JS处理. 2.处理方式:通过driver.execute_script(js)执行. #问题消除时间,调用JS的当前时间 js = "function getCurrentDate() {" " v

jquery日期控件使用,起止时间

1.下载jQuery核心文件,datepicker是轻量级插件,只需jQuery的min版本就行了,然后到官网http://jqueryui.com/download下载jquery-ui压缩包(可以选择喜欢的theme),里面就包含对datepicker的支持,当然您也可以网站http://marcgrabanski.com/pages/code/jquery-ui-datepicker下载datepicker,包括ui.core.js和ui.datepicker.js. 2.在HTML中引用

My97DatePicker日期控件实现按日、周、月、季、年选择时间段

 http://www.cnblogs.com/kevin-zlg/p/4631413.html 前台页面需要使用日期控件时,同事选择了My97DatePicker,功能还是挺强大的,在使用过程中需要实现按日.按周.按月.按季度.按年选择时间的功能. 控件自身提供了按日.按月和按年选择的功能,但是选择周和选择季度没有,鉴于方便,在选择周时就使用了选择日的状态,选择了日后再计算这一天所属的周的起始和结束日期. 在选择季度时,使用了选择月份的状态,选择月份后计算所属的季度的开始和结束日期. 控件本身

js 常用日期控件使用

一.My97DatePicker 当前最新版本: 4.8 官网:http://www.my97.net/ csdn下载地址: http://download.csdn.net/detail/czw2010/8585183 1. 使用说明: My97DatePicker目录是一个整体,不可破坏里面的目录结构,也不可对里面的文件改名,可以改目录名 My97DatePicker.htm是必须文件,不可删除(4.8以后不存在此文件) 各目录及文件的用途: WdatePicker.js 配置文件,在调用的