【问题标题】:iOS Swift Call Function Only When Particular ViewController Is In Foreground仅当特定 ViewController 在前台时 iOS Swift 调用函数
【发布时间】:2018-07-05 06:04:57
【问题描述】:
在我的应用程序中,我有两个视图控制器 viewcontroller1 和 viewcontroller2。在view controller1 中,我有一个名为UpdateView() 的函数,我需要为每个60 seconds 调用此函数,并且我使用DispatchQueue.main.asyncAfter(deadline: DispatchTime.now() + 60) 完成了它。我的问题是我只想在viewcontroller1 处于前台时运行这个函数,当用户移动到viewcontroller2 时我不想再运行这个函数了。如何解决?
【问题讨论】:
标签:
ios
swift
uiviewcontroller
dispatch-queue
【解决方案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()
}
【解决方案2】:
您应该在 viewDidDisappear 中停止计时器并在 ViewController1 中的 viewDidAppear 中启动计时器逻辑。