Время хранения от NSTimer для следующего просмотра (HELP!) - PullRequest
0 голосов
/ 14 ноября 2010

Я становлюсь отчаянным.У меня есть NSTimer во втором ViewController.

-(IBAction)start {
    myticker = [NSTimer scheduledTimerWithTimeInterval:0.01 
                                                target:self 
                                              selector:@selector(showActivity) 
                                              userInfo:nil 
                                               repeats:YES];
}

-(IBAction)stop {
    [myticker invalidate];
}

-(void)showActivity {
float currentTime = [time.text floatValue];
newTime = currentTime + 0.01;
time.text = [NSString stringWithFormat:@"%.2f", newTime];        
}

newTime это переменная экземпляра (float), а time - метка, где отображается время.

Перед вызовом третьего ViewController я сохранил время так:

-(IBAction)right {

[self stop];

ThirdViewController *screen = [[ThirdViewController alloc] initWithNibName:nil bundle:nil];
screen.modalTransitionStyle = UIModalTransitionStyleCrossDissolve;
screen.timelabel.text = [NSString stringWithFormat: @"%.2f", newTime];
[self presentModalViewController:screen animated:YES];
[screen release];
}

Я остановил таймер и передал время переменной экземпляра timelabel (UILabel).В третьем ViewController я создал тот же NSTimer с теми же методами.Но когда я открываю третий View Controller, таймер снова запускается с 0.

Что не так с моим кодом?


Мой третий ViewController:

-(IBAction)start {

    myticker = [NSTimer scheduledTimerWithTimeInterval:0.01 target:self selector:@selector(showActivity) userInfo:nil repeats:YES];

}


-(IBAction)stop {

    [myticker invalidate];

}

-(void)showActivity {

    float currentTime = [timelabel.text floatValue];
    float newTime = currentTime + 0.01;
    timelabel.text = [NSString stringWithFormat:@"%.2f", newTime];        
}

1 Ответ

0 голосов
/ 14 ноября 2010

Прежде всего, пожалуйста, переместите ваш третий код контроллера к вопросу.

Вы не удерживаете myticker. Я удивлен, что это работает вообще.

Не рекомендуется хранить данные с плавающей точкой в ​​текстовом поле. Для этого лучше использовать свойство float:

@interface MyController : UIViewController
{
  float currentTime;
  ...
}

@property (nonatomic, assign) float currentTime;
...

@end

@implementation MyController

@syntesize currentTime;

-(IBAction)start {
    self.myticker = [NSTimer scheduledTimerWithTimeInterval:0.01 
                                                target:self 
                                              selector:@selector(showActivity) 
                                              userInfo:nil 
                                               repeats:YES];
}

-(void)showActivity {
  currentTime += 0.01;
  time.text = [NSString stringWithFormat:@"%.2f", currentTime];        
}
...

@end
...