0

在我的应用程序中,我有两个视图控制器viewcontroller1viewcontroller2. 在view controller1我有一个名为的函数时,UpdateView()我需要为每个函数调用这个函数,60 seconds并且我使用DispatchQueue.main.asyncAfter(deadline: DispatchTime.now() + 60). 我的问题是我只想viewcontroller1在前台运行这个函数,当用户移动到viewcontroller2我不想再运行这个函数时。如何解决这个问题?

4

2 回答 2

1

您应该在 viewDidDisappear 中停止计时器并在 ViewController1 的 viewDidAppear 中启动计时器逻辑。

于 2018-07-05T06:15:52.583 回答
1

您可以使用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()
    }
于 2018-07-05T06:24:29.373 回答