从UIDatePicker UIDatePickerModeCountDownTimer读取值

时间:2014-10-14 15:26:30

标签: ios uidatepicker

尝试将用户从UIDatePicker中选择的时间设置为模式:InterFace Builder中的“UIDatePickerModeCountDownTimer”。其他一些堆栈只是检查对象上属性countDownDuration的值。

@property (weak, nonatomic) IBOutlet UIDatePicker *hereIsThePicker;
...
NSLog(@"%f", self.hereIsThePicker.countDownDuration);

但是这个值通常会报告一系列值,我已经看过70,80,113等数字,用于选择“0小时,0分钟”。显然cou​​ntDownDuration不是我需要的。

有没有人对如何使用UIDatePickerModeCountDownTimer有任何提示或线索,并将选择转换为所选的秒数?所以1分钟选择= 60秒,或1小时5分钟选择= 3900秒?

现在试图追踪这两天,但似乎无法理解正在发生的事情。

以下是我设置的示例应用程序的屏幕截图,其中包含这两个组件。您可以看到IBOutlet,以及一个带有IBAction的按钮,该按钮可以获取时间并将NSLogging到屏幕底部:

UIDatePicker TimerMode

2 个答案:

答案 0 :(得分:0)

最后,在尝试了几天的随机内容之后,简单的答案,无论出于何种原因,您需要将值设置为countDownDuration,即使您不需要:

[self.timerPicker setCountDownDuration:60.0f]; //Defaults to 1 minute

答案 1 :(得分:0)

在你的标题.h文件中放入

@interface ViewController : UIViewController
{

    __weak IBOutlet UIPickerView *datePick;
    NSMutableArray *hoursArray;
    NSMutableArray *minsArray;

    NSTimeInterval interval;
}
- (IBAction)calculateTimeFromPicker:(id)sender;
你的.m文件中的

放了这个

- (void)viewDidLoad
{
    [super viewDidLoad];


    //initialize arrays
    hoursArray = [[NSMutableArray alloc] init];
    minsArray = [[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 mins
        [minsArray addObject:strVal];
    }


    NSLog(@"[hoursArray count]: %d", [hoursArray count]);
    NSLog(@"[minsArray count]: %d", [minsArray count]);

}

//Method to define how many columns/dials to show
- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView
{
    return 2;
}

// 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
    {
        return [minsArray 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;
    }
    return nil;
}

- (IBAction)calculateTimeFromPicker:(id)sender
{

    NSString *hoursStr = [NSString stringWithFormat:@"%@",[hoursArray objectAtIndex:[pickerView selectedRowInComponent:0]]];

    NSString *minsStr = [NSString stringWithFormat:@"%@",[minsArray objectAtIndex:[pickerView selectedRowInComponent:1]]];


    int hoursInt = [hoursStr intValue];
    int minsInt = [minsStr intValue];

    interval = 0 + (minsInt*60) + (hoursInt*3600);

    NSString *totalTimeStr = [NSString stringWithFormat:@"%f",interval];

}