问题描述
我正在制作一个计时器应用程序,需要向用户显示小时、分钟和秒.我尝试使用 UIDatePicker
但它只显示小时和分钟作为选择.不是秒.在网上做了一些研究后,我发现没有办法在 UIDatePicker
中获得秒数,我不得不从头开始编写自己的 UIPickerView
.
I am making a timer app and needed to display hour, min and seconds to the user. I tried using UIDatePicker
but it shows only hours and mins as selections. Not seconds. After doing a bit of research online I found that there is no way to get seconds in UIDatePicker
and I had to write my own UIPickerView
from scratch.
所以我的问题是,是否有这样的示例代码,即有人写了一个 CustomUIPickerView
几个小时,分钟和秒,我可以合并到我的项目中?UIDatePicker
有一个很好的时间和时间叠加;用户旋转刻度盘时保持原样的分钟文本.如果有人也在他们的自定义选择器中添加了它,那就太好了.如果不需要,我不想从头开始编写自定义 UIPickerView
.谢谢.
So my question is, is there sample code for such i.e. someone wrote a CustomUIPickerView
for hours, min and secs that I can incorporate in my project? UIDatePicker
has a nice overlay of Hours & Mins text that stays put while the user rotate the dials. It would be nice if someone added that in their custom picker too. I prefer not to write a custom UIPickerView
from scratch if I don't have to. Thank you.
推荐答案
好吧,这里是在 UIPickerView
中获取小时/分钟/秒的代码.您可以添加 3 个标签,并有策略地将它们放置在选择器上.我也附上了一张图片.
Alrighty folks, here is the code to get hours/mins/secs in your UIPickerView
. You can add 3 labels an strategically place them on the picker. I have attached a picture as well.
如果您喜欢答案,请给它评分!优秀的开发人员分享知识,而不是像某些人建议的那样隐藏它.玩得开心编码!
If you like the answer do rate it up! Good developers share knowledge not hide it like some people suggested. Have fun coding!
在你的头文件 .h 中放这个
In your header .h file put this
@interface v1AddTableViewController : UITableViewController
{
IBOutlet UIPickerView *pickerView;
NSMutableArray *hoursArray;
NSMutableArray *minsArray;
NSMutableArray *secsArray;
NSTimeInterval interval;
}
@property(retain, nonatomic) UIPickerView *pickerView;
@property(retain, nonatomic) NSMutableArray *hoursArray;
@property(retain, nonatomic) NSMutableArray *minsArray;
@property(retain, nonatomic) NSMutableArray *secsArray;
在你的 .m 文件中放入这个
in your .m file put this
@synthesize pickerView;
@synthesize hoursArray;
@synthesize minsArray;
@synthesize secsArray;
@synthesize interval;
- (void)viewDidLoad
{
[super viewDidLoad];
//initialize arrays
hoursArray = [[NSMutableArray alloc] init];
minsArray = [[NSMutableArray alloc] init];
secsArray = [[NSMutableArray alloc] init];
NSString *strVal = [[NSString alloc] init];
for(int i=0; i<61; i++)
{
strVal = [NSString stringWithFormat:@"%d", i];
//NSLog(@"strVal: %@", strVal);
//Create array with 0-12 hours
if (i < 13)
{
[hoursArray addObject:strVal];
}
//create arrays with 0-60 secs/mins
[minsArray addObject:strVal];
[secsArray addObject:strVal];
}
NSLog(@"[hoursArray count]: %d", [hoursArray count]);
NSLog(@"[minsArray count]: %d", [minsArray count]);
NSLog(@"[secsArray count]: %d", [secsArray count]);
}
//Method to define how many columns/dials to show
- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView
{
return 3;
}
// Method to define the numberOfRows in a component using the array.
- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent :(NSInteger)component
{
if (component==0)
{
return [hoursArray count];
}
else if (component==1)
{
return [minsArray count];
}
else
{
return [secsArray count];
}
}
// Method to show the title of row for a component.
- (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component
{
switch (component)
{
case 0:
return [hoursArray objectAtIndex:row];
break;
case 1:
return [minsArray objectAtIndex:row];
break;
case 2:
return [secsArray objectAtIndex:row];
break;
}
return nil;
}
-(IBAction)calculateTimeFromPicker
{
NSString *hoursStr = [NSString stringWithFormat:@"%@",[hoursArray objectAtIndex:[pickerView selectedRowInComponent:0]]];
NSString *minsStr = [NSString stringWithFormat:@"%@",[minsArray objectAtIndex:[pickerView selectedRowInComponent:1]]];
NSString *secsStr = [NSString stringWithFormat:@"%@",[secsArray objectAtIndex:[pickerView selectedRowInComponent:2]]];
int hoursInt = [hoursStr intValue];
int minsInt = [minsStr intValue];
int secsInt = [secsStr intValue];
interval = secsInt + (minsInt*60) + (hoursInt*3600);
NSLog(@"hours: %d ... mins: %d .... sec: %d .... interval: %f", hoursInt, minsInt, secsInt, interval);
NSString *totalTimeStr = [NSString stringWithFormat:@"%f",interval];
}
这篇关于UIPickerView 看起来像 UIDatePicker 但有几秒钟的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!