2017-04-18 60 views
1

原諒超級no noob的問題,但我一直在谷歌搜索過去一小時,並感到沮喪,我似乎無法找到這樣一個非常基本的問題的答案:在Cocoa處理NSSegmentedControl選定的分段變化

我該如何處理可可中的控制變化?

我來自iOS,很明顯Cocoa不會像UIKit那樣使用插座或委託來處理事件,我覺得我只是在這裏丟失了一些非常重要的信息。我已經發現它使用了第一個響應者鏈,但除此之外,我無法弄清楚如何真正做到這一點,或者如何找到這些事件的定義或記錄位置。

所以我有一個NSSegmentedControlNSToolBar裏面,我只想知道用戶何時改變選定的段。我已經通過類文檔瞭解,但看不到任何類型的事件或操作要處理的單一。我確實注意到,如果我將控制檯的action插座拖放到我的第一個響應者代理上,我會列出不同的行動,但不會以任何方式表現出任何相關性。

我怎麼在可可中做到這一點?

+0

一個連接動作中的一個代碼,一個'IBAction'的工作方式相同像iOS中。 iOS中不可用的一種非常聰明的方式是Cocoa Bindings。 – vadian

+0

我可以在哪裏找到這些操作?我看着綁定,但它看起來像超級殺傷力。我只想要一個信號或方法調用什麼的。 – devios1

+2

在目標類中創建一個'IBAction',並在Interface Builder中連接這個動作(與iOS中的一樣)。綁定不是矯枉過正,遠非如此。在大多數情況下,代碼更少。 – vadian

回答

2

這是我的項目

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)") 
} 
+0

'acSwitch.selectedSegment'持有值選定的段 'SwitchButton(_ sender:AnyObject)'也是一個連接到該段的IBAction。 – styl3r