【问题标题】:Row selection in UIPickerViewUIPickerView 中的行选择
【发布时间】:2018-05-17 06:36:09
【问题描述】:

我想在标签上选择 UIDatePickerView 的行时显示当前日期,我的问题是当我打开日期选择器时,在选择行时标签上没有显示任何内容,但是当我移动日期选择器视图时, 它开始更新我的标签,我无法修复它。每当我触摸日期选择器视图行时,我都想显示日期。我什至还添加了 TouchUpInside 行方法,但它仍然不起作用

这是我的代码 sn-p:

- (IBAction)btn_calendar_event:(id)sender {
    // ADD UIDatePicker and open it
    if (self.picker) {
        [self.toolbar removeFromSuperview];
        [self.picker removeFromSuperview];
    }
    [self hideKeyboard];
    self.picker = [[UIDatePicker alloc] init];
    self.picker.backgroundColor = [UIColor whiteColor];
    [self.picker setValue:[UIColor blackColor] forKey:@"textColor"];

    self.picker.autoresizingMask = UIViewAutoresizingFlexibleWidth;
    self.picker.datePickerMode = UIDatePickerModeDate;
  forControlEvents:UIControlEventValueChanged];

[self.picker addTarget:self action:@selector(dueDateChanged:)forControlEvents:UIControlEventTouchUpInside]; [self.picker addTarget:self action:@selector(dueDateChanged:) forControlEvents:UIControlEventValueChanged]; }

// dueDateChanged method 

-(void) dueDateChanged:(UIDatePicker *)sender {
    NSDateFormatter* dateFormatter = [[NSDateFormatter alloc] init];
    [dateFormatter setDateFormat:@"YYYY-MM-dd"];

    NSLog(@"Picked the date %@", [dateFormatter stringFromDate:[sender date]]);
   _txtf_birthDate.text = [dateFormatter stringFromDate:[sender date]];

}

// Done button Action 

-(void)onDoneButtonClick {
    [self dueDateChanged :  self.picker];
    [self.toolbar removeFromSuperview];
    [self.picker removeFromSuperview];
}

【问题讨论】:

    标签: ios objective-c uidatepicker


    【解决方案1】:

    问题是当你初始化你的选择器时,你的选择器没有设置标签的日期,所以它只会在触发 dueDateChanged 时更新,所以当你初始化你的日期选择器时,选择你想要显示为默认的日期日期并将其显示在标签中,如

    [self.picker addTarget:self action:@selector(dueDateChanged:) forControlEvents:UIControlEventValueChanged] 之后,只需将默认日期添加到您的选择器,例如:-

    self.picker.date=[NSDate date]; // add the default initial date
    [self dueDateChanged:self.picker];
    

    根据您的要求“如果我想在选择行时显示当前日期,那么该怎么做,现在设置默认初始日期,甚至没有选择日期选择器视图的行 " 您可以在要显示日期的任何位置添加此行

    NSDateFormatter* dateFormatter = [[NSDateFormatter alloc] init];
    [dateFormatter setDateFormat:@"YYYY-MM-dd"];
    _txtf_birthDate.text = [dateFormatter stringFromDate:[NSDate date]];
    

    【讨论】:

    • 如果我想在选择行时显示当前日期然后怎么做,现在设置默认初始日期,甚至没有选择日期选择器视图的行
    • 您已经添加了dueDateChanged。那么问题出在哪里?
    • 我只想在日期选择器弹出时显示日期,当我选择日期选择器的行时,它正在解决显示当前日期的问题,但在我的日期选择器弹出之前它正在设置甚至没有触摸日期选择器行的日期!!!
    • 如果您不想设置日期,只需删除 'self.picker.date=[NSDate date]' :)
    • 看看答案,伙计,你可能错过了一些你需要解决的问题来实现你想要的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多