ios - 如何使用 Swift 跨 ViewControllers 继续一个功能?

标签 ios swift nstimer viewcontroller

我有一个 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/

相关文章:

string - Swift 可以打印 AnyObject,但不能从 AnyObject 创建字符串

ios - 更改VC后使NSTimer失效

ios - 我可以在 iOS 处于 VoiceOver 模式时告诉它在我更改特定 UILabel 的文本时大声朗读它吗?

c - 在 Swift 中读取二进制 (.hgt) 文件(将代码从 C++ 迁移到 swift)

ios - 为什么 Date 在 swift 4 中使用正确的格式时会返回 nil?

iphone - AVAudioPlayer - 在 UILabel 上显示倒数计时器

swift2 - 如何在 swift 中为 UILabel 中的递增数字设置动画

ios - 带有自定义复选标记的swift ios tableview在滚动时不断重新选择单元格

ios - 旋转 UIView 下的 UILabel

ios - 如何在 iOS swift 中获取 1 小时前的日期?