iphone - 如何设置最小时间每次都显示为UIDatepicker中的默认时间

标签 iphone ios objective-c uidatepicker

在Datepicker中,我已经设置了uidatepicker可以滚动的最小和最大时间,例如,我将3:00 PM设置为最小时间,将8:00 PM设置为最大时间,当我运行该应用程序时,我希望日期选择器显示最小时间而不是当前时间设备的。我在xib文件中没有使用的项目中对UIDatepicker进行了硬编码。我已经设置了最小时间,但是当我从control.tag == 1切换到2时,最小时间会发生变化,而且当我第一次打开应用程序时,日期选择器不会从最小时间开始。

更新:

-(IBAction)notificationButtonChanged:(UIButton *)control
{

    if (control.tag == 1)
    {
        self.selectedButton = control.tag;

        [userTimePicker reloadInputViews];

        [components setHour:7];;
        [components setMinute:00];

        NSDate *date1 = [gregorian dateFromComponents:components];

        [components setHour:11];
        [components setMinute:00];

        NSDate *date2 = [gregorian dateFromComponents:components];

        [userTimePicker setDatePickerMode:UIDatePickerModeTime];

        [userTimePicker setMinimumDate:date1];
        [userTimePicker setMaximumDate:date2];

    }

    if (control.tag == 2)
    {
        self.selectedButton = control.tag;

        [userTimePicker reloadInputViews];

        [components setHour:12];
        [components setMinute:00];

        NSDate *date1 = [gregorian dateFromComponents:components];

        [components setHour:17];
        [components setMinute:00];

        NSDate *date2 = [gregorian dateFromComponents:components];

        [userTimePicker setDatePickerMode:UIDatePickerModeTime];

        [userTimePicker setMinimumDate:date1];
        [userTimePicker setMaximumDate:date2];

    }

}

最佳答案

编辑:

int startHour = 7;
int endHour = 11;

NSDate *date1 = [NSDate date];
NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier: NSGregorianCalendar];
NSDateComponents *components = [gregorian components: NSUIntegerMax fromDate: date1];
[components setHour: startHour];
[components setMinute: 0];
[components setSecond: 0];
NSDate *startDate = [gregorian dateFromComponents: components];

[components setHour: endHour];
[components setMinute: 0];
[components setSecond: 0];
NSDate *endDate = [gregorian dateFromComponents: components];

[userTimePicker setDatePickerMode:UIDatePickerModeTime];
[userTimePicker setMinimumDate:startDate];
[userTimePicker setMaximumDate:endDate];
[userTimePicker setDate:startDate animated:YES];
[userTimePicker reloadInputViews];

关于iphone - 如何设置最小时间每次都显示为UIDatepicker中的默认时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16322437/

相关文章:

iphone - Xcode 中缺少 iOS Devtools.Core Framework pbxcp?

ios - 通过曲棍球(App Center)或 Fabric 共享时,分布式构建的有效期有多长?

ios - 如何在 Swift 中暂时停止使用某个方法?

iphone - NSDateFormatter - 1 天不正确?

objective-c - 变量名里面的变量

ios - 使平移手势需要所有 4 个滑动手势都失败

iphone - SQLite iPhone数据插入问题

javascript - 如何将文件附加到 iPhone PhoneGap jQuery Mobile 中的邮件

jQuery 和移动浏览器的兼容性?

ios - BurSTLy OAIAutoRefreshManager 显示插页式广告而应用程序没有请求它们