iOS Swift 仅在特定视图控制器处于前台时调用功能



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

您可以使用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()
}

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

最新更新