UIDatePicker仅显示年份

有没有办法只有UIDatePicker显示年份?

我有一些我正要删除的代码,但是如果它在某个地方,代码片段会更好。 这不是很了不起,但它是可search的!

Objective-C代码创build自1960年以来所有年份的数组 。 非常适合input到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]]; } 

UIPickerView数据源和委托方法:

 - (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]; } 

不要忘记界面中的声明

 //Data NSMutableArray *years; 

输出它是

在这里输入图像说明

从这里引用

你不能用UIDatePicker来做这件事,但你可以用UIPicker来做。

您需要为这些年创build一个数组,并使用UIPicker委托将它们添加到UIPicker

这里是一个教程。

我不能发表评论,但我正在玩沃沃林的答案,我决定做一个最近的一年将在select器的顶部的方式。 目前,他的代码在最近几年变得最古老。

所有我改变是在我的NSMutableArray设置在viewDidLoad而不是他的:

 //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]]; } 

我用了:

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

从最近的date开始,按照倒序排列,然后减去一年(并将其添加到数组),直到达到1920。

我的公式:

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

只需使用Swift 3更新这篇文章中的现有答案:

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

只需使用这个为你的UIPickerView数据源。