仅当特定ViewController位于前台时,iOS Swift调用功能
在我的应用程序中,我有两个视图控制器仅当特定ViewController位于前台时,iOS Swift调用功能,ios,swift,uiviewcontroller,dispatch-queue,Ios,Swift,Uiviewcontroller,Dispatch Queue,在我的应用程序中,我有两个视图控制器viewcontroller1和viewcontroller2。在view controller1中,我有一个名为UpdateView()的函数,我需要每隔60秒调用这个函数,我使用DispatchQueue.main.asyncAfter(截止日期:DispatchTime.now()+60)。我的问题是,我只想在viewcontroller1位于前台时运行此函数,当用户移动到viewcontroller2时,我不想再运行此函数。如何解决此问题?您应该停止V
viewcontroller1
和viewcontroller2
。在view controller1
中,我有一个名为UpdateView()
的函数,我需要每隔60秒调用这个函数,我使用DispatchQueue.main.asyncAfter(截止日期:DispatchTime.now()+60)
。我的问题是,我只想在viewcontroller1
位于前台时运行此函数,当用户移动到viewcontroller2
时,我不想再运行此函数。如何解决此问题?您应该停止ViewDidEnglish中的计时器并启动ViewDidEnglish中的计时器逻辑出现在ViewController1中。您应该停止ViewDidEnglish中的计时器并启动ViewDidEnglish中的计时器逻辑出现在ViewController1中。您可以使用计时器轻松做到这一点。在视图内部将出现
方法启动计时器,在视图内部将消失
停止或暂停计时器
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()
}
使用计时器
可以轻松完成此操作。在视图内部将出现
方法启动计时器,在视图内部将消失
停止或暂停计时器
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()
}