【问题标题】:UIDatePicker still showing date with time in textfield - Objective-cUIDatePicker 仍在文本字段中显示日期和时间 - Objective-c
【发布时间】:2016-03-16 07:49:03
【问题描述】:

我想将我的textfield的输入视图设置为日期选择器,并且选择日期时,我想填写与日期格式的文本字段只有,但有些东西丢失,文本菲尔德也在显示时间,我找不到日期,我找不到时间这是我的代码

datePicker = [[UIDatePicker alloc]init];
[datePicker setDate:[NSDate date]];

datePicker.datePickerMode = UIDatePickerModeDate;
[datePicker addTarget:self action:@selector(updateTextField:) forControlEvents:UIControlEventValueChanged];
[self.dob setInputView:datePicker];

这是在 viewDidLoad() 方法中定义的,datePicker 是 .m 文件的实例变量。然后我在 viewDidLoad() 之外应用了以下方法

- (NSString *)formatDate:(NSDate *)date
{
      NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
      [dateFormatter setDateStyle:NSDateFormatterMediumStyle];
      [dateFormatter setDateFormat:@"MM '/'dd'/'yyyy"];
      NSString *formattedDate = [dateFormatter stringFromDate:date];
      return formattedDate;
}

-(void)updateTextField:(id)sender
{
    datePicker = (UIDatePicker*)self.dob.inputView;
    self.dob.text = [NSString stringWithFormat:@"%@",datePicker.date];

}

还有一个问题,有时它会显示一个空白的灰色框,而不是 datePicker。

【问题讨论】:

    标签: ios objective-c datepicker uitextfield


    【解决方案1】:

    换行
    self.dob.text = [NSString stringWithFormat:@"%@",datePicker.date];

    self.dob.text = [self formatDate:datePicker.date];

    【讨论】:

    • 可以提供截图吗?
    • 有什么方法可以显示像 nov/12/2016 这样的月份,我的意思是月份不是数字
    • [dateFormatter setDateFormat:@"MMM/dd/yyyy"];
    【解决方案2】:

    在.h文件中

      @property(nonatomic,strong)UIDatePicker *datePiker;
      @property(nonatomic,strong)UITextField *dobField;
    

    现在 .m 文件 在 viewDidLoad() 中

     self.datePiker = [[UIDatePicker alloc] initWithFrame:CGRectZero];
     self.datePiker.datePickerMode = UIDatePickerModeDate;
     self.datePiker.date = [NSDate date];
     [self.datePiker addTarget:self action:@selector(LabelChange:)forControlEvents:UIControlEventValueChanged];
    
    self.dobField=[[UITextField alloc]initWithFrame:CGRectMake(20,30, DEVICE_SIZE.width-40, 30)];
    self.dobField.textColor=[UIColor blackColor];
    self.dobField.returnKeyType=UIReturnKeyDefault;
    self.dobField.clearButtonMode=UITextFieldViewModeNever;
    self.dobField.borderStyle=UITextBorderStyleNone;
    self.dobField.font=textFieldFont;
    self.dobField.placeholder=@"Date of Birth";
    self.dobField.inputView = self.datePiker;
    

    然后

    - (void)LabelChange:(id)sender{
    
    NSString *myString = @"10/05/2001";
    NSDateFormatter *df = [[NSDateFormatter alloc] init];
    df.dateFormat = @"dd/MM/yyyy";
    NSDate *yourDate = [df dateFromString:myString];
    NSLog(@"new date formate is %@",[df stringFromDate:yourDate]);
    self.dobField.text = [NSString stringWithFormat:@"%@",[df  stringFromDate:self.datePiker.date]];
      }
    

    它对我有用,试试这些代码希望它能工作

    【讨论】:

      【解决方案3】:

      使用以下更改更新文本字段的实现

      -(void)updateTextField:(UIDatePicker *)sender
      {
          self.dob.text = [NSString stringWithFormat:@"%@",[self formatDate:sender.date]];
      }
      

      【讨论】:

        猜你喜欢
        • 2016-06-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-12-13
        • 1970-01-01
        • 2021-04-30
        • 1970-01-01
        • 2018-05-18
        相关资源
        最近更新 更多