[英]iOS Swift Call Function Only When Particular ViewController Is In Foreground
In my app I am having two view controller viewcontroller1
and viewcontroller2
. 在我的应用程序中,我有两个视图控制器viewcontroller1
和viewcontroller2
。 In view controller1
I am having one function called UpdateView()
I need to call this function for every 60 seconds
and I did it using DispatchQueue.main.asyncAfter(deadline: DispatchTime.now() + 60)
. 在view controller1
1中,我有一个名为UpdateView()
函数,我需要每60 seconds
调用一次此函数,并使用DispatchQueue.main.asyncAfter(deadline: DispatchTime.now() + 60)
做到了。 My problem is I want to run this function only when viewcontroller1
is in foreground, when user moved to viewcontroller2
I don't want to run this function any more. 我的问题是我只想在viewcontroller1
处于前台时运行此功能,而当用户移至viewcontroller2
我不再希望运行此功能。 How to solve this? 如何解决呢?
您应该在viewDidDisappear中停止计时器,并在ViewController1中的viewDidAppear中启动计时器逻辑。
You can do this easily with a Timer
. 您可以使用Timer
轻松完成此操作。 Inside viewWillAppear
method start the timer and inside the viewWillDisappear
stop or pause the 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()
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.