在声明前使用局部变量'updateTimer'鸡蛋定时器。

我刚开始学习编程,老师让我们做一个鸡蛋定时器的应用程序.我试着运行她的示例解决方案,但XCode在代码上显示出一个问题。#selector(updateTimer). 错误说 Use of local variable 'updateTimer' before its declaration.

这就是代码。

class ViewController: UIViewController {
    @IBOutlet weak var progress: UILabel!
    let eggTimes = ["Soft" :3, "Medium":4, "Hard":6]
    var secondsRemaining = 60
    var timer = Timer()

    @IBAction func hardnessSelected(_ sender: UIButton) {
        timer.invalidate()
        let hardness = sender.currentTitle!
        secondsRemaining = eggTimes[hardness]!
        timer = Timer.scheduledTimer(timeInterval: 1, target: self, selector:
                                     #selector(updateTimer), userInfo: nil, repeats: true)
        func updateTimer() {
            if secondsRemaining > 0 {
                print("\(secondsRemaining) seconds left to finish")
                secondsRemaining -= 1
            }
            else {
                timer.invalidate()
                progress.text = "DONE"
            }
        }
    }
}

解决方案:

你所遇到的问题是 func updateTimer 是根据《公约》宣布的。#selector 因此,简单地说,还没有 “可用”。你可能想要的是把函数移到外面的 hardnessSelected 这样。

class ViewController: UIViewController {
    @IBOutlet weak var progress: UILabel!

    let eggTimes = ["Soft" :3, "Medium":4, "Hard":6]
    var secondsRemaining = 60
    var timer = Timer()

    @IBAction func hardnessSelected(_ sender: UIButton) {
        self.timer.invalidate()
        let hardness = sender.currentTitle!
        self.secondsRemaining = self.eggTimes[hardness]!
        self.timer = Timer.scheduledTimer(timeInterval: 1, target: self, selector: #selector(self.updateTimer), userInfo: nil, repeats: true)
    }

    @objc func updateTimer() {
        if self.secondsRemaining > 0 {
            print("\(self.secondsRemaining) seconds left to finish")
            self.secondsRemaining -= 1
        }
        else {
            self.timer.invalidate()
            self.progress.text = "DONE"
        }
    }
}

你还需要添加 @objc 前面的函数名,以使其暴露在ObjC运行时。你可以阅读更多关于 此处.

给TA打赏
共{{data.count}}人
人已打赏
未分类

Google Play Console防止生产自动发布

2022-9-8 16:30:39

未分类

如何从库中访问:app类?

2022-9-8 16:30:41

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索