切换UIViewControllers后,使用NSTimer更新UILabel会停止

时间:2014-05-09 07:21:54

标签: ios xcode uiviewcontroller storyboard

我有两个视图控制器,都通过Segue连接并使用Storyboard。

在视图控制器1中,我有一个NSTimer计数并更新UILabel。

当我切换到视图控制器2并返回1时,uilabel不再更新。

以下是一些代码:

headerfile
NSString *timerTicksForCounter;

- (void)viewDidLoad
{
    [super viewDidLoad];
    [self updateTimerLabel];
}

-(void)viewWillAppear:(BOOL)animated
{
    [super viewWillAppear:animated];
    [self updateTimerLabel];
}

- (void) startLastConUpdater
{
    lastCTimer = [NSTimer scheduledTimerWithTimeInterval:1
                                                 target:self
                                               selector:@selector(updateTimer)
                                               userInfo:nil
                                                repeats:YES];
}

-(void) updateTimerLabel
{
    NSLog(@"timer: %@", timerTicksForCounter);
    if (timerTicksForCounter) {
        NSLog(@"timer not null");
        mainTimerLabel.text = timerTicksForCounter;
    }

}

- (void)updateTimer
{

    NSDate *currentDate = [NSDate date];
    NSTimeInterval timeInterval = [currentDate timeIntervalSinceDate:stopDate];
    NSDate *timerDate = [NSDate dateWithTimeIntervalSince1970:timeInterval];

    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
    [dateFormatter setDateFormat:@"mm:ss"];

    timerTicksForCounter = [dateFormatter stringFromDate:timerDate];
    [self updateTimerLabel];
}

1 个答案:

答案 0 :(得分:2)

你的意思是什么不再更新?这是否意味着您在切换之前丢失了显示的内容,或者它不再更新。如果它不再更新,那是因为你没有用适当的方法启动计时器。你可以这样做:

-(void)viewWillAppear:(BOOL)animated
{
    [super viewWillAppear:animated];
    [self startLastConUpdater];
}

这应解决我上面提到的两个问题。