Функция быстрого вызова iOS, только когда конкретный ViewController находится на переднем плане - PullRequest
0 голосов
/ 05 июля 2018

В моем приложении у меня есть два контроллера вида viewcontroller1 и viewcontroller2. В view controller1 у меня есть одна функция с именем UpdateView() Мне нужно вызывать эту функцию для каждого 60 seconds, и я сделал это, используя DispatchQueue.main.asyncAfter(deadline: DispatchTime.now() + 60). Моя проблема в том, что я хочу запускать эту функцию только тогда, когда viewcontroller1 находится на переднем плане, когда пользователь перешел на viewcontroller2 Я больше не хочу запускать эту функцию. Как это решить?

Ответы [ 2 ]

0 голосов
/ 05 июля 2018

Вы можете сделать это легко с Timer. Внутри viewWillAppear метод запуска таймера, а внутри viewWillDisappear остановка или пауза таймера.

var myTimer:Timer!
var myTimeInterval:TimeInterval = 60

override func viewWillAppear(_ animated: Bool) {
        super.viewWillAppear(animated)
        myTimer = Timer.init(fire: Date(), interval: myTimeInterval, repeats: true, block: { (aTimer) in
            //call the functio you want
            UpdateView()
        })
    }

    override func viewWillDisappear(_ animated: Bool) {
        super.viewWillDisappear(animated)
        myTimer.invalidate()
    }
0 голосов
/ 05 июля 2018

Вы должны остановить таймер в viewDidDisappear и запустить логику таймера в viewDidAppear в ViewController1.

...