2012-08-24 32 views
5

enter image description hereUIDatePicker giá trị được chọn là sai trong trường hợp UIDatePicker không cuộn

Tôi đang làm cho một ứng dụng iPhone mà tôi đang sử dụng UIDatePicker và hiển thị được lựa chọn thời gian trong một actionsheet. Trong actionheet thời gian được hiển thị với khoảng thời gian 10 mints.

textfield giá trị được thiết lập một cách chính xác khi tôi di chuyển các Datepicker

Nếu tôi không cuộn tờ hành động sau đó nhấp chuột trực tiếp vào nút chọn sau đó lĩnh vực văn bản thiết lập thời gian hiện tại (11:56) nhưng tôi chọn trong trang tính hành động (11:50) thời gian. (textfield) hiển thị giá trị không đúng.

Tôi làm cách nào để đặt giá trị textfield (11:50). Hãy cho tôi một số giải pháp.

+0

NSLog giá trị được lựa chọn của bạn tức là youdatepicker.date –

+0

chọn [12:30] và nslog 12:37 nếu tôi không cuộn ....và nếu tôi cuộn sau đó [selcet 12:30] .. nslog 12:30 –

Trả lời

1

EDIT Làm cho lớp học của bạn xử lý sự kiện UIControlEventValueThay đổi trong bộ chọn của bạn. Thêm dòng phương pháp viewDidLoad này hoặc khi actionsheet bạn được hiển thị:

[picker addTarget:self action:@selector(dateChanged:) 
      forControlEvents:UIControlEventValueChanged]; 

Bây giờ chọn sẽ được gọi khi ngày được thay đổi

CẬP NHẬT

- (void) dateChanged:(id)sender{ 
    // handle date changes and set in textField 
    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 
    NSString *strdate = [dateFormatter stringFromDate:self.datePicker.date]; //provide your selected date here 
    self.dateTexField.text = strdate; 
} 

Nếu phương pháp nêu trên không được gọi là có nghĩa là ngày là không thay đổi nên luôn đặt ngày mặc định trong textField của bạn. ngày


Chuyển đổi đối tượng chuỗi

CẬP NHẬT

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 
NSString *strdate = [dateFormatter stringFromDate:self.datePicker.date]; //provide your selected date here 

Bây giờ thiết lập giá trị cho TextField như thế này:

self.dateTextField.text = strdate; 
+0

tôi làm điều này .. điều này sẽ hoạt động chính xác khi tôi cuộn. nhưng không phải trong trường hợp khi tôi trực tiếp chạm vào nút chọn –

+1

không làm việc mã ur :( –

1

Chỉ cần đặt dateSelected từ chọn ngày của bạn sau khi chọn nút nhấn ....

NSDate *date = datePicker.date; 
NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; 
[formatter setDateFormat:@"dd/MM/yyyy"];  
NSString *dateString = [formatter stringFromDate:date]; 
yourTxtField.text = dateString; 
0

Tôi nghĩ cách đơn giản nhất là chỉ đính kèm thanh công cụ với nút được thực hiện vào TextField của bạn có UIDatePicker làm inputView của nó. Theo dõi TextField hiện tại của bạn bằng cách duy trì một tham chiếu đến nó trong TextViewDidBeginEditing. Sau đó, trong nút thực hiện làm một cái gì đó như thế này:

if (_currentTextField == _myTextFieldThatUsesADatePicker) { 
    self.myDateProperty = _myDatePicker.date; 
} 
0

Tôi không biết cách này có đúng sai, nhưng nó làm việc cho tôi

-(void)selectedTime{ 
    NSDateFormatter *outputFormatter = [[NSDateFormatter alloc] init]; 
// [outputFormatter setDateFormat:@"h:mm a"]; 
    [outputFormatter setDateFormat:@"HH:mm:ss"]; 
    selectedTime = [outputFormatter stringFromDate:datePicker.date]; 
    NSArray *temp=[selectedTime componentsSeparatedByString:@":"]; 
    NSLog(@"%@",temp); 
    NSInteger mins=[[temp objectAtIndex:1]integerValue]; 
    //check your interval here 
    if (mins<=29) { 
     selectedTime=[NSString stringWithFormat:@"%@:%@:%@",[temp objectAtIndex:0],@"00",@"00"]; 
    }else if (mins>=31 && mins<=59){ 
     selectedTime=[NSString stringWithFormat:@"%@:%@:%@",[temp objectAtIndex:0],@"30",@"00"]; 
    }else{ 
//  selectedTime = [outputFormatter stringFromDate:datePicker.date]; 
    } 
    if (self.delegate && [self.delegate respondsToSelector:@selector(SelectedValue:)]) { 
     [self.delegate SelectedValue:selectedTime]; 
    } 
    [self.popupController dismiss]; 
} 

khoảng của tôi là 30 phút

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