如何使用 Swift 跨 ViewController 继续执行功能?

IvO*_*vOS 4 nstimer viewcontroller ios swift

我有一个 NSTimer(),它从单击按钮开始。如果我希望timer显示在标签上,我可以在同一个视图控制器中执行此操作,但我希望计时器继续运行并且值 (1...2...3) 显示在下一个视图中控制器。我有一个在下一个视图控制器上显示时间变量的标签,但它只在按下按钮时显示时间变量的值,并且不会继续。时间变量被传递,但运行它的函数不是。我该怎么做呢?

var timer = NSTimer()

var time = 0
Run Code Online (Sandbox Code Playgroud)

内部 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)

    }
Run Code Online (Sandbox Code Playgroud)

SecondSceneViewController 有一个从这个视图控制器传递的时间变量:

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
            var secondScene = segue.destinationViewController as!           
                              SecondViewController

            secondScene.time = time
    }
Run Code Online (Sandbox Code Playgroud)

当我转到 secondViewController 时,时间变量内的值是按下按钮时时间变量的值,它不会继续运行。我将如何将计时器传递给下一个视图控制器以显示值?

Str*_*ers 5

IMO 您应该将计时器的代码提取到单例中,然后从两个 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()
}
Run Code Online (Sandbox Code Playgroud)

}