2010-01-26 18 views
17

Làm thế nào để tắt hoặc ẩn AM/PM trong UIDatePicker từ trình tạo mã/giao diện?Làm thế nào để vô hiệu hóa AM/PM trong UIDatePicker

Tôi muốn có chế độ bộ chọn thời gian 24 giờ trong UIDatePicker. Vui lòng giúp

+0

Được trả lời tại đây http://stackoverflow.com/questions/1151335/can-i-localize-a-uidatepicker/2265984#2265984 và tại đây http://stackoverflow.com/questions/2894161/uidatepicker-problem-localizing/2918507 # 2918507, màn hình bộ chọn tùy thuộc vào cài đặt quốc gia, không phụ thuộc vào cài đặt ngôn ngữ. Trong ví dụ của bạn, bạn chỉ thay đổi ngôn ngữ của ngôn ngữ. –

+0

Đối với iOS 6, bạn có thể xem câu trả lời của mình http://stackoverflow.com/a/12975871/1376032 – FunkyKat

Trả lời

6

AFAIK bạn không thể (trong giới hạn SDK). AP/PM sẽ biến mất nếu người dùng chọn sử dụng định dạng 24 giờ. Thực hiện UIPickerView của riêng bạn trong trường hợp điều này là quan trọng.

10

Theo tài liệu bạn có thể đặt thuộc tính locale của UIDatePicker thành ngôn ngữ sử dụng định dạng 24 giờ.

NSLocale *locale = [[NSLocale alloc] initWithLocaleIdentifier:@"da_DK"]; 
[datePicker setLocale:locale]; 
[locale release]; 

Đã xảy ra lỗi khiến cả trình mô phỏng và thiết bị tiếp tục bố cục bộ chọn ngày theo tùy chọn quốc tế của người dùng.

Như bạn đề xuất, bạn phải cuộn bộ chọn ngày đã thắng để có thể hiển thị bộ chọn 24 giờ.

+1

Tôi đã thử địa chỉ en_GB và dk_DK không hoạt động trong trình mô phỏng cũng như trong thiết bị. Nhưng tôi nhận thấy nếu bạn đặt định dạng 24 giờ trong cài đặt iphone thì UIDatepicker hiển thị thời gian 24 giờ. Vì vậy, tôi có nên tạo UIPickerView của riêng mình hoặc có cách nào để đạt được điều này không? –

+0

Tôi đã sai trong câu trả lời ban đầu của mình (hiện đã được cập nhật), cả thiết bị cũng như trình mô phỏng đều không hoạt động. Một báo cáo lỗi đã được đệ trình với Apple. Bây giờ tôi sẽ làm như bạn đề nghị - cuộn của riêng bạn. –

+0

Nó không phải là một lỗi, bạn chỉ thay đổi một ngôn ngữ, trong khi trong thực tế nó phụ thuộc vào cài đặt quốc gia. –

-3

này loại bỏ AM/PM từ bộ chọn ...

UIDatePicker *myDatePicker = [[UIDatePicker alloc]init]; 
[myDatePicker setDatePickerMode:UIDatePickerModeDate]; 
+4

Nó cũng loại bỏ thời gian! Tôi không nghĩ rằng đây là những gì cần thiết. – jrturton

1

AM/PM được liên kết với các thiết lập miền địa phương của iphone. Bạn có thể buộc địa phương của bộ chọn vào thứ gì đó không có AM/PM như ro_RO hoặc trong trường hợp bạn muốn nó tất cả thời gian với AM/PM bạn có thể đi với en_. Đối với cài đặt bạn này có thể làm điều đó trong thiết kế ở bên phải dưới locale như English (United States) hoặc theo mã

[timePicker setLocale:[NSLocale localeWithLocaleIdentifier:@"en_US"]];

0

Tôi biết điều này là cũ ... nhưng tôi đã nhìn vào điều này thời gian gần đây và thấy điều này thông qua một số thử nghiệm:

[datePicker setLocale:[[NSLocale alloc] initWithLocaleIdentifier:@"en_FR"]]; 

này về cơ bản nói với tôi rằng "ngôn ngữ" là tiếng Anh ("en" một phần) và "thời gian phong cách" là Pháp (đó là thời gian 24 giờ mặc định) (các "FR" phần). Tôi kết hợp cả hai thông qua thử nghiệm và lỗi và thấy rằng nó đã làm việc cho những gì tôi muốn, mà chỉ là để có một "ngày và thời gian" picker cũng chọn trong 24 giờ thời gian (không có AM/PM phần trên bảng chọn, bằng tiếng Anh bản văn).

Vấn đề ở đây là, khi bạn lấy ngày ở đây, các địa phương có thể sai ->

- (void)changeDate:(UIDatePicker *)sender { 

Vì vậy, thực hiện điều này để sửa chữa các miền địa phương trong phần lựa chọn thay đổi ngày:

[sender setLocale:[[NSLocale alloc] initWithLocaleIdentifier:@"en_FR"]]; 
Các vấn đề liên quan