Objective-C NSTimer更新标签不会更新

时间:2011-02-08 16:10:50

标签: objective-c nstimer

我有两种方法。一种方法(timerHit)获取当前播放歌曲的曲目持续时间,从中减去1并将其打印在日志中,然后还使用该值更新标签。另一种方法(countDown)每秒重复调用timerHit方法,但它似乎无法正常工作NSLog语句有效并重复,因此每秒打印一次值,但是更新标签语句[duration setDoubleValue:trackDuration];不起作用。任何人都可以帮助我吗?

- (void)countDown {
    [NSTimer scheduledTimerWithTimeInterval:1.0f target:self selector:@selector(timerHit:) userInfo:nil repeats:YES];
}

- (void)timerHit:(NSTimer *)p_timer
{
    iTunesApplication *iTunes = [SBApplication applicationWithBundleIdentifier:@"com.apple.iTunes"];
    double trackDuration = [[iTunes currentTrack] duration];
    if( trackDuration <= 1 && [p_timer isValid] )
        [p_timer invalidate];
    trackDuration--;
    NSLog(@"%d", trackDuration);
    [duration setDoubleValue:trackDuration];
}

谢谢,萨米。

2 个答案:

答案 0 :(得分:0)

假设持续时间是NSTextField的一个实例(在Google搜索之后,似乎是这种情况 - 我找不到NSLabel是现有对象),试试这个;

[duration setStringValue:[NSString stringWithFormat:@"%d", trackDuration]];

答案 1 :(得分:0)

您需要设置标签的文字:

duration.text = [NSString stringWithFormat:@"%d", trackDuration]];