Ios 如何显示datetimepicker并在textfield中设置所选值

Ios 如何显示datetimepicker并在textfield中设置所选值,ios,Ios,嗨,我是iphone编程新手。这个程序我将为iphone做,所以我需要帮助。我的问题是,点击一个按钮是否会出现日期选择器,当选择日期时,我希望它存储在一个文本字段中。如何操作。请帮助我,我将非常感谢你。我有一个按钮,我想显示一个日期时间选择器如何可以做到这一点? 下面是我的试用代码,但它不工作,只是显示黑屏 - (IBAction)date:(id)sender { UIDatePicker* picker = [[UIDatePicker alloc] init]; picke

嗨,我是iphone编程新手。这个程序我将为iphone做,所以我需要帮助。我的问题是,点击一个按钮是否会出现日期选择器,当选择日期时,我希望它存储在一个文本字段中。如何操作。请帮助我,我将非常感谢你。我有一个按钮,我想显示一个日期时间选择器如何可以做到这一点? 下面是我的试用代码,但它不工作,只是显示黑屏

- (IBAction)date:(id)sender {
    UIDatePicker* picker = [[UIDatePicker alloc] init];
    picker.autoresizingMask = UIViewAutoresizingFlexibleWidth;
    picker.datePickerMode = UIDatePickerModeDate;

    [picker addTarget:self action:@selector(dueDateChanged:) forControlEvents:UIControlEventValueChanged];
    CGSize pickerSize = [picker sizeThatFits:CGSizeZero];
    picker.frame = CGRectMake(0.0, 250, pickerSize.width, 460);
    picker.backgroundColor = [UIColor blackColor];
    [self.view addSubview:picker];
   // [picker release];

}
-(void) dueDateChanged:(UIDatePicker *)sender {
    NSDateFormatter* dateFormatter = [[NSDateFormatter alloc] init];
    [dateFormatter setDateStyle:NSDateFormatterLongStyle];
    [dateFormatter setTimeStyle:NSDateFormatterNoStyle];

    //self.myLabel.text = [dateFormatter stringFromDate:[dueDatePickerView date]];
    NSLog(@"Picked the date %@", [dateFormatter stringFromDate:[sender date]]);
}

你的CGSizeZero可能会导致你的日期选择器不显示

这是我用一种简单的方式做的:

.H文件 .M文件 现在,当您滚动日期选择器时,您将在文本字段中填充日期,如下所示:


它起作用了。。但我还有一个问题,如果我想点击“完成”按钮,那么datetimepicker的值将显示在文本字段中?请修改您的解决方案,只需添加以下代码:
[self-datePicker:self.datePicker]在showDatePicker:(id)sender的末尾?你在最初的问题中从未提到过“完成”按钮。您的意思是如何导航回上一个视图控制器?对不起,我看不懂:D表示我想显示一个ok按钮或done按钮,我在上面单击并在textbox中设置所选值。如何在uidatepicker视图中以渐进方式添加它?
@interface ViewController : UIViewController

@property (nonatomic, strong) UIDatePicker *datePicker;
@property (nonatomic, strong) UITextField *textField;
@property (nonatomic, strong) UIButton *btnShowPicker;

@end
- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.

    [self initViews];
}

-(void)initViews
{
    self.datePicker = [[UIDatePicker alloc] initWithFrame:CGRectMake(0, 20, 280, 200)];

    // hide date picker at first
    self.datePicker.alpha = 0;


    self.textField = [[UITextField alloc] initWithFrame:CGRectMake(20, self.datePicker.frame.origin.y + self.datePicker.frame.size.height + 20, self.view.frame.size.width - 40.0, 35)];
    self.textField.layer.borderWidth = 1.0;
    self.textField.layer.borderColor = [UIColor grayColor].CGColor;
    self.textField.textAlignment = NSTextAlignmentCenter;


    self.btnShowPicker = [[UIButton alloc] initWithFrame:CGRectMake(20, self.view.bounds.size.height - 140.0, self.view.frame.size.width - 40.0, 50.0)];
    [self.btnShowPicker setTitle:@"Show Date Picker" forState:UIControlStateNormal];
    self.btnShowPicker.backgroundColor = [UIColor blueColor];
    [self.btnShowPicker addTarget:self action:@selector(showDatePicker:) forControlEvents:UIControlEventTouchUpInside];


    self.btnDone = [[UIButton alloc] initWithFrame:CGRectMake(self.btnShowPicker.frame.origin.x, self.btnShowPicker.frame.origin.y + self.btnShowPicker.frame.size.height + 10.0, self.btnShowPicker.frame.size.width, self.btnShowPicker.frame.size.height)];
    self.btnDone.backgroundColor = [UIColor greenColor];
    [self.btnDone setTitle:@"Done" forState:UIControlStateNormal];
    [self.btnDone addTarget:self action:@selector(datePicked) forControlEvents:UIControlEventTouchUpInside];
    self.btnDone.alpha = 0;


    [self.view addSubview:self.datePicker];
    [self.view addSubview:self.textField];
    [self.view addSubview:self.btnShowPicker];
    [self.view addSubview:self.btnDone];
}

-(void)showDatePicker:(id)sender
{
    self.datePicker.alpha = 1.0;
    self.btnDone.alpha = 1.0;
}

-(void)datePicked
{
    if(self.datePicker.alpha != 0)
    {
        NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
        [dateFormatter setDateFormat:@"dd/MM/yyyy HH:mm:ss"];

        // populate the text field with new date
        self.textField.text = [dateFormatter stringFromDate:self.datePicker.date];
    }
}