2014-10-11 3 views
0

У меня есть NSTimer, настроенный в UICollectionViewCell. Он работает нормально, за исключением того, что он продолжается даже после того, как я изменил представление через segue. Как мне его остановить? Одно из решений, которое пришло в голову, - NSNotificationCenter. Есть ли способ лучше? Большое спасибо!Остановить NSTimer в UICollectionViewCell после выхода из вида

ответ

1

Я не уверен, но когда вы укажете свой таймер, например: let myTimer:NSTimer = ..., то вы можете сделать в функции prepareForSegue: myTimer.invalidate() Эта функция останавливает таймер. Так положить все таймеры в var myArray = [NSTimer](), а затем в prepareForSegue:

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

Я создаю таймер для каждого 'UICollectionViewCell', поэтому он находится в прикрепленном классе. Это неправильно? –

+0

Итак, для чего нужен таймер? Но вы также можете поместить все таймеры в массив и затем остановить все их в пределах цикла. Я обновлю свой ответ за вас – borchero

+0

Это для повторения анимации и выполнения некоторых вычислений. Эти расчеты специфичны для ячейки. Поэтому каждый должен иметь таймер. Я могу попытаться использовать один таймер в контроллере и аннулировать его в 'viewWillDisappear' или попробовать вашу версию недействительности. Благодаря! –

2

Как о создании метода для признания недействительным таймера для клетки и в viewWillDisappear()

вызова, метод для всех видимых ячеек

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

Это тоже хорошая идея. Но я думаю, что таймер не останавливается на скрытых ячейках ... Он даже не останавливается, если я переключусь на другой контроллер. –

+0

Я проверю и сообщите, если он работает –

+0

Как правило, вы должны аннулировать предыдущий таймер в prepareForReuse() вашей ячейки и выполнять некоторую логику, чтобы сохранить текущее время работы каждой ячейки (например, временную метку), а затем продолжить таймер, когда он показывает снова из (время сохранения + время истекает с отметки времени сохранения) (при прокрутке назад) – SaintTail

Смежные вопросы