2014-10-11 35 views

回答

1

我不知道,但是當你給你的計時器的名稱,例如:let myTimer:NSTimer = ...那麼你就可以在prepareForSegue功能做:myTimer.invalidate()此功能停止計時器。 所以把所有的計時器在var myArray = [NSTimer](),然後在prepareForSegue:

for timer in myArray { 
timer.invalidate() 
} 
+0

我爲每個'UICollectionViewCell'創建一個計時器,所以它在附加的類中。這是錯的嗎? – 2014-10-11 05:32:09

+0

那麼定時器是什麼?但是你也可以把所有的定時器放在一個數組中,然後在for循環中停止它們。我會爲你更新我的答案 – borchero 2014-10-11 07:48:55

+0

這是重複動畫和做一些計算。這些計算是特定於單元格的。所以每個人都應該有一個計時器。我可能會嘗試在Controller中使用一個計時器,並在「viewWillDisappear」中使其失效或嘗試使用無效的版本。謝謝! – 2014-10-11 17:10:52

2

怎麼樣在你的細胞,並在viewWillDisappear()

呼籲創建無效的方法的計時器,對所有可見的細胞的方法

let cells = self.tableView.visibleCells(); 
for cell in cells { 
    // call invalidate 
} 
+0

這也是一個好主意。但我認爲計時器不會停在隱藏的單元上......如果我切換到另一個控制器,它甚至不會停止。 – 2014-10-11 17:13:00

+0

我會檢查並報告它是否工作 – 2014-10-11 17:37:16

+0

通常您應該使您的單元格的prepareForReuse()中的前一個定時器無效,並執行一些邏輯以保存每個單元格的當前運行時間(如時間戳),然後在顯示時繼續定時器再次從(保存時間+從保存時間戳過去的時間)(當您向後滾動時) – SaintTail 2014-10-13 14:55:16