【问题标题】:Date Picker - show time between two dates (UIDatePickerModeDateAndTime)日期选择器 - 显示两个日期之间的时间 (UIDatePickerModeDateAndTime)
【发布时间】:2014-07-22 00:00:44
【问题描述】:

我目前正在展示 Date Picker 类型的 UIDatePickerModeCountDownTimer,它使用:

- (UIDatePicker *)datePicker {
    if (!_datePicker) {
        _datePicker = [[UIDatePicker alloc] init];
        _datePicker.datePickerMode = UIDatePickerModeCountDownTimer;
        _datePicker.backgroundColor = [UIColor colorWithWhite:1.0 alpha:0.8];
    }
    return _datePicker;
}

- (void)setDuration:(NSTimeInterval)duration {
    _duration = duration;

    self.datePicker.countDownDuration = _duration;
}

...日期选择器,并显示(在标签中)从当前日期到将来选择的日期的时间:

- (void)update {
    if (self.time) {
        [self setImage:nil forState:UIControlStateNormal];

        NSString *title;
        NSTimeInterval timeInterval = [self.time doubleValue];

        if (self.ticking) {
            NSMutableString *dateFormat = [[NSMutableString alloc] init];

            if (timeInterval < 0) {
                [dateFormat appendString:@"-"];
            }

            if (fabsf(timeInterval) > 60 * 60) {
                [dateFormat appendString:@"hh:"];
            }

            [dateFormat appendString:@"mm:ss"];

            NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
            formatter.dateFormat = dateFormat;
            formatter.timeZone = [NSTimeZone timeZoneForSecondsFromGMT:0];

            NSDate *date = [NSDate dateWithTimeIntervalSince1970:timeInterval];
            title = [formatter stringFromDate:date];

            if ([self.time integerValue] > 0) {
                self.circleView.backgroundColor = [UIColor colorWithRed:0.373 green:0.702 blue:0.522 alpha:1];
            } else {
                self.circleView.backgroundColor = [UIColor colorWithRed:0.820 green:0.373 blue:0.424 alpha:1];
            }
        } else {
            NSMutableString *text = [[NSMutableString alloc] init];
            if (fabsf(timeInterval) < 60) {
                // Show seconds
                [text appendFormat:@"%.0fs", timeInterval];
            } else if (fabsf(timeInterval) < 60 * 60) {
                // Show minutes
                [text appendFormat:@"%.0fm", floorf(timeInterval / 60)];
            } else {
                // Show hours
                [text appendFormat:@"%.0fh", floorf(timeInterval / 60 / 60)];
            }

            title = text;
            self.circleView.backgroundColor = [UIColor colorWithWhite:1.0f alpha:0.2];
        }

        [self setTitle:title forState:UIControlStateNormal];

        return;
    }

    [self setTitle:nil forState:UIControlStateNormal];
    [self setImage:[UIImage imageNamed:@"plus"] forState:UIControlStateNormal];
    self.circleView.backgroundColor = [UIColor colorWithWhite:1.0f alpha:0.05];
}

...但我将DatePicker 切换为UIDatePickerModeDateAndTime 并且需要弄清楚如何用它更新我的update 方法。

我需要在标签中显示月/日以及小时/分钟/秒。

【问题讨论】:

    标签: ios objective-c date datepicker


    【解决方案1】:

    如果你想要一个像委托这样的方法,那么这可以帮助你..

    将目标添加到您的日期选择器......

    [myDatePicker addTarget:self action:@selector(onPickerValueChanged:) forControlEvents:UIControlEventValueChanged];
    

    在 dealloc 中删除目标。否则,如果您的选择器正在滚动并且 viewController 被弹出,应用程序将崩溃。

    - (void dealloc
    {
        [myPicker removeTarget:self action:@selector(onPickerValueChanged:) forControlEvents:UIControlEventValueChanged];
        [myPicker release];//FOR NON ARC
        [super dealloc];//FOR NON ARC
    }
    

    实现值改变

    - (IBAction)onPickerValueChanged:(id)sender
    {
        [self update];
    }
    

    【讨论】:

    • 是的。会给你赏金
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-12-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-29
    • 2017-01-17
    相关资源
    最近更新 更多