2012-08-18 54 views
12

Có cách nào để chỉ hiển thị UIDatePicker trong năm không?UIDatePicker để chỉ hiển thị năm

+0

Nó sẽ giúp hiểu thêm nếu bạn có thể dán mã của mình. –

+0

Chỉ cần sử dụng bộ chọn đơn giản. –

Trả lời

5

Bạn không thể làm điều này với UIDatePicker, nhưng bạn có thể với UIPicker.

Bạn cần phải tạo một mảng cho nhiều năm, và thêm chúng vào UIPicker sử dụng UIPicker đại biểu

Here 's một hướng dẫn.

14

Tôi có một mã nhỏ mà tôi sắp xóa, nhưng đoạn trích sẽ tốt hơn nếu nó trực tuyến ở đâu đó. Nó không tuyệt vời, nhưng nó có thể tìm kiếm được!

Mã mục tiêu-C để tạo một mảng của tất cả các năm kể từ năm 1960. Hoàn hảo cho đầu vào thành một UIPicker

//Get Current Year into i2 
NSDateFormatter* formatter = [[[NSDateFormatter alloc] init]autorelease]; 
[formatter setDateFormat:@"yyyy"]; 
int i2 = [[formatter stringFromDate:[NSDate date]] intValue]; 


//Create Years Array from 1960 to This year 
years = [[NSMutableArray alloc] init]; 
for (int i=1960; i<=i2; i++) { 
    [years addObject:[NSString stringWithFormat:@"%d",i]]; 
} 

Nguồn UIPickerView dữ liệu và đại biểu các phương pháp:

- (NSInteger)numberOfComponentsInPickerView: (UIPickerView*)thePickerView { 
    return 1; 
} 

- (NSInteger)pickerView:(UIPickerView *)thePickerView numberOfRowsInComponent:(NSInteger)component 
{ 
    return [years count]; 
} 
- (NSString *)pickerView:(UIPickerView *)thePickerView 
titleForRow:(NSInteger)row forComponent:(NSInteger)component 
{ 
    return [years objectAtIndex:row]; 
} 

Đừng quên khai báo trong giao diện

//Data 
NSMutableArray *years; 

Các đưa ra của nó là

enter image description here

tham chiếu từ here

+0

Rocking trên StackOverflow .. Tuyệt vời .. !! là công ty của bạn cung cấp đào tạo để làm mới trong phát triển iPhone? –

+0

Trên thực tế, Không. Bộ phận mới của tôi phát triển trong công ty của tôi –

+0

Tôi hy vọng rằng một sinh viên lập trình 101 sẽ biết cách tạo một mảng giá trị năm sau tuần thứ hai của lớp học. –

3

Tôi không thể bình luận, nhưng tôi đã chơi đùa với các câu trả lời bằng Wolvorin và tôi quyết định làm một cách nơi năm gần nhất sẽ là ở phía trên cùng của Picker. Hiện tại, mã của anh ấy đã tồn tại lâu đời nhất trong những năm gần đây nhất.

Mọi thay đổi tôi còn ở thiết lập NSMutableArray tôi trong viewDidLoad thay vì của mình:

//Create Years Array from 1960 to This year 
years = [[NSMutableArray alloc] init]; 
for (int i=1960; i<=i2; i++) { 
    [years addObject:[NSString stringWithFormat:@"%d",i]]; 
} 

tôi đã sử dụng:

years = [[NSMutableArray alloc] init]; 
for (int i1=i2; i1<=i2 & i1>=1920; i1--) { 
    [years addObject:[NSString stringWithFormat:@"%d",i1]]; 
} 

nào không cho theo thứ tự đảo ngược đi từ ngày gần đây nhất, sau đó trừ đi một năm (và thêm nó vào Mảng) cho đến khi nó đạt đến 1920.

Công thức của tôi:

int i1=i2; i1<=i2 & i1>=1920; i1-- 
1

Chỉ cần cập nhật các câu trả lời có sẵn trong bài đăng này với Swift 3:

var yearsTillNow : [String] { 
    var years = [String]() 
    for i in (1970..<2018).reversed() { 
     years.append("\(i)") 
    } 
    return years 
} 

Chỉ cần sử dụng này cho UIPickerView nguồn dữ liệu của bạn.

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