无法将动作添加到菜单项

时间:2018-12-13 13:58:40

标签: swift cocoa

为什么我不能添加动作?当我按下按钮 setDefault clearText (AppDelegate中的代码)时,弹出错误: My error

我的故事板:

Story Board

My menu items

我的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
    }

2 个答案:

答案 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中发布故事板的屏幕截图和更多代码,以便我们为您提供更好的帮助