iOS Swift 仅当特定 ViewController 在前台时调用函数
iOS Swift Call Function Only When Particular ViewController Is In Foreground
在我的应用程序中,我有两个视图控制器 viewcontroller1
和 viewcontroller2
。在 view controller1
中,我有一个名为 UpdateView()
的函数,我需要为每个 60 seconds
调用此函数,我使用 DispatchQueue.main.asyncAfter(deadline: DispatchTime.now() + 60)
完成了它。我的问题是只有当 viewcontroller1
在前台时我才想 运行 这个功能,当用户移动到 viewcontroller2
我不想再 运行 这个功能了。如何解决?
您应该在 ViewController1 的 viewDidDisappear 中停止计时器并在 viewDidAppear 中启动计时器逻辑。
您可以使用 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()
}
在我的应用程序中,我有两个视图控制器 viewcontroller1
和 viewcontroller2
。在 view controller1
中,我有一个名为 UpdateView()
的函数,我需要为每个 60 seconds
调用此函数,我使用 DispatchQueue.main.asyncAfter(deadline: DispatchTime.now() + 60)
完成了它。我的问题是只有当 viewcontroller1
在前台时我才想 运行 这个功能,当用户移动到 viewcontroller2
我不想再 运行 这个功能了。如何解决?
您应该在 ViewController1 的 viewDidDisappear 中停止计时器并在 viewDidAppear 中启动计时器逻辑。
您可以使用 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()
}