2010-07-05 88 views
0

我一直努力與HH秒錶:MM:SS,代碼如下:的NSTimer - 秒錶

-(IBAction)startTimerButton; 
{ 
    myTimer = [NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(showActivity) userInfo:nil repeats:YES]; 
} 


-(IBAction)stopTimerButton; 
{ 
    [myTimer invalidate]; 
    myTimer = nil; 
} 


-(void)showActivity; 
{ 
    int currentTime = [time.text intValue]; 
    int newTime = currentTime + 1; 
    time.text = [NSString stringWithFormat:@"%.2i:%.2i:%.2i", newTime]; 
} 

雖然輸出並以1秒就增加預期的輸出格式爲XX :YY:ZZZZZZZZ,其中XX是秒。

任何任何想法??

回答

6

你stringWithFormat要求3點的整數,但你只傳遞一個;)

下面是一些代碼,我以前用來做什麼的,我認爲你正在試圖做的:

- (void)populateLabel:(UILabel *)label withTimeInterval:(NSTimeInterval)timeInterval { 
    uint seconds = fabs(timeInterval); 
    uint minutes = seconds/60; 
    uint hours = minutes/60; 

    seconds -= minutes * 60; 
    minutes -= hours * 60; 

    [label setText:[NSString stringWithFormat:@"%@%02uh:%02um:%02us", (timeInterval<[email protected]"-":@""), hours, minutes, seconds]]; 
} 

與定時器使用它,這樣做:

... 
    [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(updateTimer:) userInfo:nil repeats:YES]; 
    ... 

- (void)updateTimer:(NSTimer *)timer { 
    currentTime += 1; 
    [self populateLabel:myLabel withTimeInterval:time; 
} 

其中currentTime的是要通過一個每秒計數了一個NSTimeInterval。

+0

謝謝,YY,ZZ,是用上面的代碼顯示的格式。但我已將它更改爲: time.text = [NSString stringWithFormat:@「%02i:%02i:%02i」,second /(60 * 60),second/60,second]; 根據你的建議和格式不是HH:MM:SS,但我的秒停止計數後1.任何想法? – Stephen 2010-07-05 16:36:00

+0

你的方法的第一行是[time.text intValue] - 沒有像HH:MM:SS這樣的字符串的intValue,所以intValue每次都返回0。你需要添加一個變量到你的類來存儲currentTime。查看我的編輯,以瞭解我之前使用過的一些代碼。 – deanWombourne 2010-07-06 09:17:25

+0

現在都在工作,謝謝。 – Stephen 2010-07-09 09:40:22