iOS开发:-[EggTimer.ViewController hardness:] 无法识别选择器错误求助
问题核心原因
这个错误的本质是按钮的IBAction绑定与代码中的方法不匹配:错误信息里的hardness:是系统尝试调用的方法名,但你的代码里实际定义的IBAction方法是hardnessSelected(_:),两者名称不一致,导致系统找不到对应方法,抛出未识别选择器的异常。
两种修复方案
方案一:更新Storyboard/XIB的按钮绑定
- 打开对应的Storyboard或XIB文件,找到煮蛋选项按钮
- 右键点击按钮,查看
Sent Events下的Touch Up Inside绑定,你会发现它指向了一个不存在的hardness:方法 - 点击该绑定旁的
×删除错误关联,重新拖拽绑定到代码中的hardnessSelected(_:)方法
方案二:修改代码方法名匹配现有绑定
如果不想改动Storyboard的设置,可以直接把代码中的方法名改成错误提示里的名称:
import UIKit class ViewController: UIViewController { let eggTimes = ["Soft" : 5, "Medium" : 7, "Hard" : 12] @IBAction func hardness(_ sender: UIButton) { let hardness = sender.currentTitle! let result = eggTimes[hardness]! print(result) } }
额外优化建议
避免使用强制解包!,防止空值导致崩溃,用可选绑定更安全:
@IBAction func hardnessSelected(_ sender: UIButton) { guard let hardness = sender.currentTitle, let result = eggTimes[hardness] else { print("无效的煮蛋硬度选项") return } print(result) }
内容的提问来源于stack exchange,提问作者Apurvo Pal
相关产品推荐
相关产品推荐

