为什么我不能添加动作?当我按下按钮 setDefault 或 clearText (AppDelegate中的代码)时,弹出错误: My error
我的故事板:
我的ViewController:
class ViewController: NSViewController {
@IBOutlet weak var textField: NSTextField!
@IBOutlet weak var Lable: NSTextField!
@IBAction func setButton(_ sender: Any) {
let value = textField.stringValue
Lable.stringValue = value
}
}
我的AppDelegate:
@IBAction func setDefault(_ sender: Any) {
let defaultVar:String = "Default"
Label.stringValue = defaultVar
}
@IBAction func clearText(_ sender: Any) {
let clear:String = " "
Label.stringValue = clear
}
答案 0 :(得分:1)
将这两个动作都移至视图控制器,将发件人更改为NSMenuItem
,然后调整Lable
(请用小写字母开头的属性来命名属性)
class ViewController: NSViewController {
@IBOutlet weak var textField: NSTextField!
@IBOutlet weak var Lable: NSTextField!
@IBAction func setButton(_ sender: Any) {
let value = textField.stringValue
Lable.stringValue = value
}
@IBAction func setDefault(_ sender: NSMenuItem) {
let defaultVar = "Default"
Lable.stringValue = defaultVar
}
@IBAction func clearText(_ sender: NSMenuItem) {
let clear = " "
Lable.stringValue = clear
}
}
然后在Interface Builder中将菜单项连接到AppDelegate
的 First Responder (顶部红色立方体),然后分别在列表中选择方法。实现了其中一种方法的响应者链中的第一个控制器将对此做出响应。
答案 1 :(得分:0)
出现错误时尝试调试该函数,并查看是否已设置Lable和Lable.stringValue;因为未设置您的值时会出现错误“在展开可选值时意外发现nil”,所以编译器发现它为nil并崩溃。
无论如何,请在您的ViewController中发布故事板的屏幕截图和更多代码,以便我们为您提供更好的帮助