Swift:在 nstimer 倒计时结束时转换到新的视图控制器 [重复]

Posted

技术标签:

【中文标题】Swift:在 nstimer 倒计时结束时转换到新的视图控制器 [重复]【英文标题】:Swift: transition to new view controller at end of nstimer countdown [duplicate] 【发布时间】:2015-07-05 17:53:07 【问题描述】:

好的,所以我在 Swift 中工作,我有我的 ViewController 和我的游戏场景视图,因为它是一个精灵套件游戏。现在我的视图控制器中有一个NSTimer,它从 3 开始倒计时。当它达到 0 时,计时器停止。我在这里实现了这一点:

@IBOutlet weak var countdownTestLabel: UILabel!

    var countdown = NSTimer()
    var counter = 3

    func updateCounter() 
        countdownTestLabel.text = String(counter--)

        if counter == 0 
            countdown.invalidate()
            //Then trigger segue to Game Scene view

        
    

    override func viewDidLoad() 
        super.viewDidLoad()

        //Setting up countdown timer

        countdownTestLabel.font =  UIFont(name: "DIN Condensed", size: 30)
        countdownTestLabel.text = "\(counter)"

        countdown = NSTimer.scheduledTimerWithTimeInterval(1, target:self, selector: Selector("updateCounter"), userInfo: nil, repeats: true)

当计时器停止时,我需要执行一个转场来加载我的游戏场景视图。我知道如何使用按钮(控制拖动)来执行此操作,但我需要以编程方式执行此操作。

我尝试过类似self.presentViewController(secondViewController, animated: true, completion: nil) 的操作,但我不知道如何将secondViewController 定义为我的游戏场景,我遇到了错误。我该怎么办?

【问题讨论】:

您是要显示 SKScene 子类还是 UIVewController 子类?我觉得当您说 segue 时,您的意思只是显示一个场景。 【参考方案1】:

您有几个选择。

您可以从源视图控制器控制拖动到目标视图控制器并创建视图控制器级别的 segue。然后你会给它一个唯一的标识符,然后使用performSegueWithIdentifier:sender: 来调用它。

另一种选择是给视图控制器的场景一个唯一标识符,使用instantiateViewControllerWithIdentifier: 创建该视图控制器的实例,然后使用 `presentViewController:animated:' 调用它

【讨论】:

以上是关于Swift:在 nstimer 倒计时结束时转换到新的视图控制器 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

为啥 NSTimer 在 swift 中只工作一次

NSTimer 中的错误(Swift:Xcode)

如何使用 NSTimer 进行倒计时?

启动 24 小时计时器,当 24 小时结束时通知用户

在 Swift 中使用 NSTimer 时发送到类的无法识别的选择器; NSInvalidArgumentException

页面实现多个定时器(计时器)时选用NSTimer还是GCD