Многократный таймер в контейнере ViewSift Swift 4 Xcode - PullRequest
0 голосов
/ 10 мая 2018

У меня есть один основной ControllerView с двумя видами контейнеров друг на друга (containerA поверх ContainerB).у обоих контейнеров есть ControllerView.Я запускаю таймер в каждом контейнере.Проблема, с которой я сталкиваюсь, заключается в том, что, когда я скрываю ContainerB, чтобы показать ContainerA, таймер containerB все еще работает в фоновом режиме, что вызывает более чем 100% загрузку ЦП.

Может ли кто-нибудь помочь мне, как остановить таймер, когдаУ меня есть другой контейнер ViewView?Я использую две кнопки, чтобы скрыть и показать виды контейнера.

Код таймера ContainerA:

ViewATimer = Timer.scheduledTimer(timeInterval: 1, target: self,   selector: (#selector(self.update)), userInfo: nil, repeats: true)

Контейнер B:

ViewBTimer = Timer.scheduledTimer(timeInterval: 10, target: self,   selector: (#selector(self.secondUpdate)), userInfo: nil, repeats: true)

Ответы [ 2 ]

0 голосов
/ 11 мая 2018

Для остановки таймера

func stopTimer(timer: Timer) {
 if timer != nil {
    timer.invalidate()
    timer = nil
 }
}
0 голосов
/ 10 мая 2018

Когда вы показываете Контейнер, делайте

ViewBTimer.invalidate()

ViewATimer = Timer.scheduledTimer(timeInterval: 1, target: self, selector: (#selector(self.update)), userInfo: nil, repeats: true)

//

Когда вы показываете ContainerB, делайте

ViewATimer.invalidate()

ViewBTimer = Timer.scheduledTimer(timeInterval: 10, target: self,   selector: (#selector(self.secondUpdate)), userInfo: nil, repeats: true)
...