我有一个 NSTimer() 在单击按钮时启动。如果我希望 timer
显示在标签上,我可以在同一个 View Controller 中执行此操作,但我希望计时器继续运行并且值 (1...2...3 ) 显示在下一个 View Controller 上。我有一个标签在下一个 View Controller 上显示时间变量,但它只在按下按钮时显示时间变量的值并且不会继续。传递了时间变量,但没有传递运行它的函数。我该怎么做呢?
var timer = NSTimer()
var time = 0
在 viewDidLoad 中:
timer = NSTimer.scheduledTimerWithTimeInterval(1, target: self, selector: Selector("timerFunc"), userInfo: nil, repeats: true)
func timerFunc() {
time++
//time label displays the time (1..2...3 etc)
timeLabel.text = String(time)
}
SecondSceneViewController 有一个从这个 View Controller 传递过来的时间变量:
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
var secondScene = segue.destinationViewController as!
SecondViewController
secondScene.time = time
}
当我转到 secondViewController 时,时间变量中的值是按下按钮时的时间变量,它不会继续运行。我将如何将计时器传递给下一个 View Controller 以显示值?
最佳答案
IMO 你应该将计时器的代码提取到 Singleton 中然后从两个 ViewControllers 访问它
这是一个简单的入门方法:
class TimerManager {
var realSharedInstance: TimerManager?
var sharedInstance: TimerManager {
get{
if let realSharedInstance = realSharedInstance {
return realSharedInstance
}
else{
realSharedInstance = TimerManager()
return realSharedInstance!
}
}
}
var timer: NSTimer
init() {
timer = NSTimer()
}
func rest() {
timer = NSTimer()
}
关于ios - 如何使用 Swift 跨 ViewControllers 继续一个功能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35785534/