2016-03-19 13 views
9

Trong ứng dụng của tôi, tôi muốn hiển thị UIDatePicker khi người dùng nhấp vào nút. Và ngày đó lưu vào UITextFiled.I thực hiện những việc này. Vấn đề của tôi là khi bộ chọn ngày xuất hiện, không có nút được thực hiện, Cách thêm nút đã hoàn tất đó. Upto bây giờ tôi đã thử.Làm cách nào để thêm nút "Đã hoàn tất" vào trong DatePicker thông qua StoryBoard?

- (IBAction)pickerAction:(id)sender 
{ 
datePicker.datePickerMode=UIDatePickerModeDate; 
datePicker.hidden=NO; 
datePicker.date=[NSDate date]; 
[datePicker addTarget:self action:@selector(TextTitle:) forControlEvents:UIControlEventValueChanged]; 
[self.view addSubview:datePicker]; 
NSDateFormatter * df = [[NSDateFormatter alloc] init]; 
[df setDateFormat:@"M-d-yyyy"]; 
selectedDate.text=[df stringFromDate:datePicker.date]; 
} 

-(void)TextTitle:(id)sender 
{ 
NSDateFormatter *df = [[NSDateFormatter alloc] init]; 
[df setDateFormat:@"M-d-yyyy"]; 
selectedDate.text = [NSString stringWithFormat:@"%@", 
         [df stringFromDate:datePicker.date]]; 
} 

Làm cách nào tôi có thể thêm nút được thực hiện với mã này. hãy giúp tôi.

+0

Điều này không thông qua bảng phân cảnh nhưng câu trả lời bình chọn cao nhất ở đây rất dễ sử dụng chế độ xem phụ kiện http://stackoverflow.com/questions/13700552/toolbar-at-the-top-of-uipickerview-in-xcode – DogCoffee

Trả lời

8

trả lời là

datePicker=[[UIDatePicker alloc]init]; 
datePicker.datePickerMode=UIDatePickerModeDate; 
[TextField1 setInputView:datePicker]; 

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

[TextField1 setInputAccessoryView:toolBar]; 
+0

@magid. cảm ơn bạn đã chỉnh sửa. –

+1

Có thể là một ý tưởng tốt để hiển thị cách loại bỏ Bộ chọn ngày. Làm thế nào về, TextField1.resignFirstResponder? Tôi nhận thấy dưới đây, dân gian đã tạo ra những thói quen phức tạp như thế nào cho hoạt hình của người hái khỏi chế độ xem. Nhưng resignFirstResponder sẽ làm điều đó cho bạn, giả sử TextField1 có inputView của nó được đặt cho bộ chọn, như trong ví dụ này. –

+0

Cảm ơn bạn! Nó rất hữu ích. – Raja

2

Tôi đã thêm UIToolbar với UIBarButtonItem cho nút 'done' trong xib của tôi với khung được thiết lập để nó không nhìn thấy ban đầu (giá trị y bằng với chiều cao của chế độ xem gốc).

Mỗi lần người dùng truy cập bộ chọn, tôi đã thay đổi khung (giá trị y) của UIDatePicker và thanh UIToolbar bằng hoạt ảnh sao cho nó trượt lên cùng với bộ chọn từ cuối màn hình tương tự như bàn phím.

Kiểm tra mã của tôi bên dưới.

- (IBAction)showPicker 
{ 
    if(pickerVisible == NO) 
    { 
     // create the picker and add it to the view 
     if(self.datePicker == nil) self.datePicker = [[[UIDatePicker alloc] initWithFrame:CGRectMake(0, 460, 320, 216)] autorelease]; 
     [self.datePicker setMaximumDate:[NSDate date]]; 
     [self.datePicker setDatePickerMode:UIDatePickerModeDate]; 
     [self.datePicker setHidden:NO]; 
     [self.view addSubview:datePicker]; 

     // the UIToolbar is referenced 'using self.datePickerToolbar' 
     [UIView beginAnimations:@"showDatepicker" context:nil]; 
     // animate for 0.3 secs. 
     [UIView setAnimationDuration:0.3]; 

     CGRect datepickerToolbarFrame = self.datePickerToolbar.frame; 
     datepickerToolbarFrame.origin.y -= (self.datePicker.frame.size.height + self.datePickerToolbar.frame.size.height); 
     self.datePickerToolbar.frame = datepickerToolbarFrame; 

     CGRect datepickerFrame = self.datePicker.frame; 
     datepickerFrame.origin.y -= (self.datePicker.frame.size.height + self.datePickerToolbar.frame.size.height); 
     self.datePicker.frame = datepickerFrame; 

     [UIView commitAnimations]; 
     pickerVisible = YES; 
    } 
} 

- (IBAction)done 
{ 
    if(pickerVisible == YES) 
    { 
     [UIView beginAnimations:@"hideDatepicker" context:nil]; 
     [UIView setAnimationDuration:0.3]; 

     CGRect datepickerToolbarFrame = self.datePickerToolbar.frame; 
     datepickerToolbarFrame.origin.y += (self.datePicker.frame.size.height + self.datePickerToolbar.frame.size.height); 
     self.datePickerToolbar.frame = datepickerToolbarFrame; 

     CGRect datepickerFrame = self.datePicker.frame; 
     datepickerFrame.origin.y += (self.datePicker.frame.size.height + self.datePickerToolbar.frame.size.height); 
     self.datePicker.frame = datepickerFrame; 
     [UIView commitAnimations]; 

     // remove the picker after the animation is finished 
     [self.datePicker performSelector:@selector(removeFromSuperview) withObject:nil afterDelay:0.3]; 
    } 
} 
1

Bạn có thể sử dụng UIView và trong UIView này thêm nút DatepickerDone của bạn. Nút đã hoàn tất tạo sự kiện Hành động và trong đó bạn sẽ xử lý UIView ẩn và hiển thị của mình. Hope this helps

Các vấn đề liên quan