IOS 中单击按钮上的日期选择器

One*_*eeb 2 objective-c ios

我知道这个问题被问了很多次,但我面临一个问题,当我点击按钮时我的日期选择器没有打开,选择后我想在标签中显示它的值。我的代码是,

datepicker = [[UIDatePicker alloc]init];
datepicker.datePickerMode = UIDatePickerModeDate;

UIToolbar *toolBar = [[UIToolbar alloc]initWithFrame:CGRectMake(0, self.view.frame.size.height - 216 - 44, self.view.frame.size.width, 44)];
[toolBar setTintColor:[UIColor blackColor]];
UIBarButtonItem *doneBtn = [[UIBarButtonItem alloc]initWithTitle:@"Done" style:UIBarButtonItemStylePlain target:self action:@selector(ShowSelectedDate)];
UIBarButtonItem *space = [[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:self action:nil];
[toolBar setItems:[NSArray arrayWithObjects:doneBtn,space,nil]];

// _label1.text:datepicker.date;

-(void)ShowSelectedDate {
    NSDateFormatter *fromatter = [[NSDateFormatter alloc]init];
    [fromatter setDateFormat:@"dd/mm/yyyy"];
    _label1.text = [NSString stringWithFormat:@"%@",[fromatter stringFromDate:datepicker.date]];
    [_label1 resignFirstResponder];
}
Run Code Online (Sandbox Code Playgroud)

Kul*_*eep 11

您将为IBAction您的按钮创建一个以调用以显示UIDatePicker. 然后实现UIDatePicker委托方法并设置标签的文本。

目标 C

全局定义

UIToolbar* toolbar;
UIDatePicker* picker;
Run Code Online (Sandbox Code Playgroud)

在你的头文件中:

-(IBAction)showDatePicker:(id)sender;
Run Code Online (Sandbox Code Playgroud)

在您的实现文件中

- (IBAction)showDatePicker:(id)sender {
    picker = [[UIDatePicker alloc] init];
    picker.backgroundColor = [UIColor whiteColor];
    [picker setValue:[UIColor blackColor] forKey:@"textColor"];
    
    picker.autoresizingMask = UIViewAutoresizingFlexibleWidth;
    picker.datePickerMode = UIDatePickerModeDate;
    
    [picker addTarget:self action:@selector(dueDateChanged:) forControlEvents:UIControlEventValueChanged];
    picker.frame = CGRectMake(0.0, [UIScreen mainScreen].bounds.size.height - 300, [UIScreen mainScreen].bounds.size.width, 300);
    [self.view addSubview:picker];
    
    toolbar = [[UIToolbar alloc]initWithFrame:CGRectMake(0, [UIScreen mainScreen].bounds.size.height - 300, [UIScreen mainScreen].bounds.size.width, 50)];
    toolbar.barStyle = UIBarStyleBlackTranslucent;
    toolbar.items = @[[[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil], [[UIBarButtonItem alloc]initWithTitle:@"Done" style:UIBarButtonItemStyleDone target:self action:@selector(onDoneButtonClick)]];
    [toolbar sizeToFit];
    [self.view addSubview:toolbar];
}

-(void) dueDateChanged:(UIDatePicker *)sender {
    
    NSDateFormatter* dateFormatter = [[NSDateFormatter alloc] init];
    [dateFormatter setDateStyle:NSDateFormatterLongStyle];
    [dateFormatter setTimeStyle:NSDateFormatterNoStyle];
    
    NSLog(@"Picked the date %@", [dateFormatter stringFromDate:[sender date]]);
    YOUR_LABEL.TEXT = [dateFormatter stringFromDate:[sender date]];
}

-(void)onDoneButtonClick {
    [toolbar removeFromSuperview];
    [picker removeFromSuperview];
}
Run Code Online (Sandbox Code Playgroud)

斯威夫特 4.2

全局定义

var toolBar = UIToolbar()
var datePicker  = UIDatePicker()
Run Code Online (Sandbox Code Playgroud)

在您的按钮操作中编写代码。

@IBAction func showDatePicker(_ sender: UIButton) {
    datePicker = UIDatePicker.init()
    datePicker.backgroundColor = UIColor.white
            
    datePicker.autoresizingMask = .flexibleWidth
    datePicker.datePickerMode = .date
            
    datePicker.addTarget(self, action: #selector(self.dateChanged(_:)), for: .valueChanged)
    datePicker.frame = CGRect(x: 0.0, y: UIScreen.main.bounds.size.height - 300, width: UIScreen.main.bounds.size.width, height: 300)
    self.view.addSubview(datePicker)
            
    toolBar = UIToolbar(frame: CGRect(x: 0, y: UIScreen.main.bounds.size.height - 300, width: UIScreen.main.bounds.size.width, height: 50))
    toolBar.barStyle = .blackTranslucent
    toolBar.items = [UIBarButtonItem(barButtonSystemItem: .flexibleSpace, target: nil, action: nil), UIBarButtonItem(title: "Done", style: .done, target: self, action: #selector(self.onDoneButtonClick))]
    toolBar.sizeToFit()
    self.view.addSubview(toolBar)
}

@objc func dateChanged(_ sender: UIDatePicker?) {
    let dateFormatter = DateFormatter()
    dateFormatter.dateStyle = .long
    dateFormatter.timeStyle = .none
        
    if let date = sender?.date {
        print("Picked the date \(dateFormatter.string(from: date))")
    }
}

@objc func onDoneButtonClick() {
    toolBar.removeFromSuperview()
    datePicker.removeFromSuperview()
}
Run Code Online (Sandbox Code Playgroud)