gpt4 book ai didi

ios - 从另一个角度停止 NSTimer?

转载 作者:搜寻专家 更新时间:2023-11-01 05:51:10 25 4
gpt4 key购买 nike

我想从另一个 View SettingsTabelViewController 停止 UIRequiredPassowrdViewController 中的 NSTimer,所以我首先创建倒计时:

class UIRequiredPassowrdViewController: UIViewController, UITextFieldDelegate {
var timer: NSTimer?
var remainingSeconds = 1000

override func viewDidLoad() {
super.viewDidLoad()

timer = NSTimer.scheduledTimerWithTimeInterval(1, target: self, selector: "updateTimer:", userInfo: nil, repeats: true)
}

func updateTimer(timer: NSTimer) {
remainingSeconds -= 1
println(remainingSeconds)
}

func StopTimerNotication(){
println("Function Start!")
timer?.invalidate()
timer = nil
}
}

然后我从另一个 View SettingsTabelViewController 调用函数 StopTimerNotication() :

@IBAction func myButtonClicked(sender: AnyObject) {
println("Button Clicked")
var myClass: UIRequiredPassowrdViewController=UIRequiredPassowrdViewController()
myClass.StopTimerNotication()
}

然后我运行该应用程序,日志正确显示倒计时,单击按钮并运行该功能,但计时器只是没有停止:

999
998
997
996
995
994
993
992
991
990
989
Button Clicked
Function Start!
988
987
986
985

我该如何解决这个问题?

最佳答案

myClass是一个新初始化的 View Controller ,它与您启动计时器的 View Controller 完全不同。所以要解决你的问题,基本上你需要找到一种方法来告诉特定的 View Controller 停止它的计时器。
对于这种情况,有两种常见的解决方案:
(1) 使用通知:在你的UIRequiredPassowrdViewController注册一个特定的通知,我们称之为StopTimerNotification ,当您收到此类通知时,停止计时器。而在 SettingsTabelViewController , 发出 StopTimerNotificationmyButtonClicked .
(2) 使用delegate:这里需要一个简单的协议(protocol),我们称它为StopTimerProtocol这可能只有方法 func stopTimer() .还有你的UIRequiredPassowrdViewController需要遵守这个协议(protocol)并实现那个方法。然后添加一个delegate id<StopTimerProtocol> 类型的属性至 SettingsTabelViewController .之后,当您出示或推送 SettingsTabelViewController 时在 UIRequiredPassowrdViewController 之上设置delegate属性(property)。最后,在SettingsTabelViewController什么时候myButtonClicked只需调用 self.delegate.stopTimer()

关于ios - 从另一个角度停止 NSTimer?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31066094/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com