2014-04-12 39 views
0

在xcode中,當我登錄我的NSTimer時,它開始於viewDidAppear並停止在viewdiddisappear這很好,但是當我去一個退出segue時,定時器恢復(我不想發生,因爲它變成了雙倍)。我如何正確地阻止它,以便在再次調用時不會翻倍?我在哪裏正確啓動並使NSTimer無效?

..when我把在viewdidload .sure它不會增加一倍,但因爲我而無效viewDidDisappear它不會重新開始這裏是我的代碼

-(void)viewDidAppear:(BOOL)animated{ 
    if (self.timeInc.isValid == NO){ 

     self.timeInc = [NSTimer scheduledTimerWithTimeInterval:1.0f target:self selector:@selector(updateDetailCounter:) userInfo:([Dateformatter2() dateFromString:_DetailModal[1]]) repeats:YES]; 


    } 
} 

-(void)viewDidDisappear:(BOOL)animated{ 
    [self.timeInc invalidate]; 
} 
+0

你是什麼意思在**當我去一個退出segue **? –

+0

它去位於導航頁面的根視圖這種開卷命令 - (IBAction爲)unwindToMain:(UIStoryboardSegue *){賽格瑞 } – user3517855

+1

總是調用'super'如果重寫'viewDidAppear:','viewDidDisappear:' ......如果你放鬆一下,那麼控制器應該在計時器被破壞之前銷燬計時器 - 你的控制器是被毀壞還是被人爲地保留?當你說'加倍'時,你的意思是你有額外的計時器運行? – Wain

回答

0

你可以試試這個,在過去我有相同的問題viewDidAppear,viewDidDisappear

- (void) viewWillAppear:(BOOL)animated{ 
    [super viewWillAppear:animated]; 
    if (self.timerInc) { 
    [self.timerInc invalidate]; 
    self.timerInc = nil; 
    } 
    _timerInc = [NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(doSth) userInfo:nil repeats:YES]; 
} 

- (void) viewWillDisappear:(BOOL)animated{ 
    [super viewWillDisappear:animated]; 
    [self.timerInc invalidate]; 
    self.timerInc = nil; 
}