簡體   English   中英

從UIDatePicker讀取值UIDatePickerModeCountDownTimer

[英]Reading Value from UIDatePicker UIDatePickerModeCountDownTimer

嘗試獲取用戶從InterFace Builder中設置為mode:“ UIDatePickerModeCountDownDownTimer”的UIDatePicker中選擇的時間量。 其他一些堆棧說只檢查對象的屬性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秒?

一直試圖追蹤此事已有2天,但似乎無法理解發生了什么。

這是我設置的示例應用程序的屏幕截圖,其中僅包含這兩個組件。 您可以看到IBOutlet,以及帶有IBAction的按鈕,該按鈕正在獲取時間並將其NSLogging到屏幕底部:

UIDatePicker TimerMode

最后,在嘗試了幾天的隨機數據之后,無論出於何種原因,即使您不需要:

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

在您的標頭.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];

}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM