Swift 无法识别的选择器发送到实例 [重复]

问题描述 投票:0回答:3

我是一个完全的新手,上周通过在线课程开始学习 Swift。

我的问题是,我在不同的项目中以某种方式收到相同的错误。每次我运行模拟器并单击我的链接按钮之一时,没有任何反应,Xcode 会给我以下错误消息:“无法识别的选择器发送到实例”。有人能帮我吗? :)

我非常仔细地学习了课程并得到了与视频中的人相同的代码,我也是从头开始,但都没有工作。

class ViewController: UIViewController {
    
    let eggTimes = ["Soft": 300, "Medium": 420, "Hard": 720]
    
    var secondsRemaining = 60
       
    @IBAction func hardnessSelected(_ sender: UIButton) {
        let hardness = sender.currentTitle!

        secondsRemaining = eggTimes[hardness]!
        
        Timer.scheduledTimer(timeInterval: 1.0, target: self, selector: #selector(updateTimer), userInfo: nil, repeats: true)           
    }
    
    @objc func updateTimer() {
        if secondsRemaining > 0 {
            print("\(secondsRemaining) seconds.")
            secondsRemaining -= 1
        }
    }
}
swift xcode uibutton
3个回答
0
投票

首先转到 Storyboard,找到该按钮并右键单击它,检查所有 IBActions 并确保只有一个,称为

hardnessSelected
.

如果这没有帮助, 尝试删除

_ sender: UIButton
IBAction 中的
hardnessSelected
参数。


0
投票

您可能在 Interface Builder(故事板)中将错误的东西连接到

hardnessSelected
。确保它实际上是一个 UIButton。阅读整个错误信息;它可能会告诉您所涉及的类型。


0
投票

错误消息“无法识别的选择器发送到实例”通常表示从代码中的按钮或其他控件调用的方法或函数存在问题。

在您的代码中,导致此错误的最可能原因是您在视图控制器中链接到 hardnessSelected 方法的按钮在故事板或 XIB 文件中未正确链接。

要检查这一点,请打开包含按钮的故事板或 XIB 文件,并检查按钮是否正确链接到视图控制器中的 hardnessSelected 方法。您可以通过按住 Control 键单击故事板或 XIB 文件中的按钮,并在弹出菜单的“已发送操作”部分下查找与 hardnessSelected 方法的连接。

如果连接不存在,您可以通过按住 Control 从按钮拖动到故事板或 XIB 文件中的视图控制器图标,然后从弹出菜单中选择 hardnessSelected 方法来创建一个新连接。

如果连接存在,但仍然出现错误,请尝试清理构建文件夹并重建项目。要清理构建文件夹,请转到 Xcode 中的“产品”菜单,按住 Option 键,然后选择“清理构建文件夹”。然后,尝试再次运行该应用程序,看看错误是否仍然存在。

如果这些步骤都不能解决问题,请提供有关错误消息的更多信息以及它在代码中的确切位置。

© www.soinside.com 2019 - 2024. All rights reserved.