处理NSSegmentedControl在Cocoa中选择的段更改

时间:2017-04-18 16:28:44

标签: cocoa nstoolbar nssegmentedcontrol responder-chain

请原谅超级菜鸟的问题,但过去一小时我一直在谷歌上搜索这个问题而感到很沮丧,我似乎无法找到这个基本问题的答案:

如何处理Cocoa中的控件更改?

我来自iOS,很明显Cocoa不会像UIKit那样使用网点或代表处理活动,我觉得我只是错过了一些这里重要的信息。我已经发现它使用了第一个响应链,但除此之外,我无法弄清楚如何实际操作,或者如何找到这些事件的定义或记录位置。

所以我在NSSegmentedControl中有一个NSToolBar,我只是想知道用户何时更改所选的细分受众群。我通过课程文档仔细阅读,但无法看到单个提及要处理的任何类型的事件或操作。我注意到如果我将控件的action插座拖到我的第一个响应者代理上,我会列出一个千万亿次的不同操作,其中任何一个都没有任何相关性。

我怎么在Cocoa中做到这一点?

1 个答案:

答案 0 :(得分:3)

这是我的一个项目的代码

var currntSeg : Int = 1
@IBOutlet weak var acSwitch: NSSegmentedControl!
@IBAction func SwitchButton(_ sender: AnyObject) {
    switch acSwitch.selectedSegment {
    case 0:
        currntSeg == 0 ?
            self.navVC?.pushViewController(Sleeper!, animated: true) :
            self.navVC?.popViewController(Sleeper!, animated: true)
    case 1:
        currntSeg < 1 ?
            self.navVC?.pushViewController(Work!, animated: true) :
            self.navVC?.popViewController(Work!, animated: true)
    case 2:
        currntSeg < 2 ?
            self.navVC?.pushViewController(Student!, animated: true) :
            self.navVC?.popViewController(Student!, animated: true)
    default:
        self.navVC?.pushViewController(Rose!, animated: true)
    }
    currntSeg = acSwitch.selectedSegment
    print("Selected Seg: \(acSwitch.selectedSegment)")
}