我是iOS开发的初学者,所以也许这是我身边的一个愚蠢的愿望。 然而,事情是:我正在制作我的应用程序的统计部分,这应该让用户选择某个月份和年份,并且他将获得他之前输入的不同条目的那段时间的一些统计结果。 困难的部分是我也想实施“全年”选择月份组件,因此用户可以选择,例如,“全部”月份和“2013”年份,他将获得整个2013年的统计数据。我无法在此网站或谷歌中找到任何此类示例,因为在所有情况下,DatePicker都会返回特定日期,而不是日期范围。 所以我得出结论,也许这不是你在iOS中做这样一个任务的方式?我想到的其中一个选项是实现两个日期选择器,一个用于'从',一个用于'直到',但它似乎有点单调乏味...... 基本上,我希望用户能够选择某个月或一年来查看该段时间的统计数据。 我很感激你是否可以给我一些建议,告诉你如何在iOS中继续执行这样的任务。 感谢。
更新:感谢大家的答案!
答案 0 :(得分:3)
只需使用UIPickerView
即可。设置选择器和数据源,使其具有两个组件。一个月(1月至12月加上你的“全部”选项)和另一个月份。
答案 1 :(得分:3)
使用UIPickerView作为rmaddy说。并使用适当的委托方法自定义选择器的数据源。
设置日期来源(例如)
soureYear = [[NSMutableArray alloc] initWithObjects:@"2001",@"2002",@"2003",@"2004",@"2005",@"2006",@"2007",@"2008",@"2009",@"2010",@"2011",@"2012",@"2013", nil];
soureMonth = [[NSMutableArray alloc] initWithObjects:@"Jan",@"Feb",@"Mar",@"Apl",@"May",@"Jun",@"July",@"Aug",@"Sep",@"Oct",@"Nov",@"Dec", nil];
委派方法。
- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView
{
return 2;
}
- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component
{
if(component == 1)
return [soureMonth count];
else
return [soureYear count];
}
- (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component
{
if(component == 0)
return [soureYear objectAtIndex:row];
return [soureMonth objectAtIndex:row];
}
从选择器中获取所选项目
-(IBAction)selectedItem
{
NSLog(@" %@", [soureYear objectAtIndex:[sample2 selectedRowInComponent:0]]);
NSLog(@" %@", [soureMonth objectAtIndex:[sample2 selectedRowInComponent:1]]);
}
您将获得您的预期。
答案 2 :(得分:1)
有两种方法可以实现这一点。
创建一个非常模仿UIPickerView
行为的自定义UIDatePicker
,但会添加“所有月份”行。
在视图层次结构中的某处添加UISwitch
,以启用“所有月份”。打开电源后,从日期选择器中删除月份组件,并在关闭开关时将其添加回来。这与Apple在创建新活动时在日历应用中的行为非常相似。
答案 3 :(得分:0)
此外,github中有一个很好的UIComponent,可以用于此目的 链接到组件:DRK MonthSelector。