2016-04-18 95 views
0

根據Big Nerd Ranch的書「OS X的可可編程」,使用NSMatrix的舊方法將被棄用。 新方法是使用NSButton的幾個實例,樣式設置爲Radio。 來自同一無線電組的每個NSButton應分配給一個共享的@IBAction方法。並使用tag屬性來區分它們在這個動作方法中。作爲單選按鈕組的NSButton組

的問題是:從單選按鈕組檢查當前如何NSButton得到通知另一個按鈕被點擊,和當前按鈕應在其狀態更改爲未選中?

我知道關於問題:How to create NSRadioButton Group in Xcode 7 OSX但我的問題不是關於如何創建它。問題是消息如何到達其他NSButton視圖?由於Action在Window控制器類上執行,而不是在視圖上執行。

圖片是遵循:

 
     --> NSButton sends @IBAction ViewController.radioButtonPressed 
Window -| 
     --> NSButton sends @IBAction ViewController.radioButtonPressed 

但是,如何在它們之間這兩個實例交換狀態信息? 看來,他們和ViewController之間只有一種方法通信?一個按鈕如何知道另一個按鈕被按下?

+0

創建一個變量來保持當前狀態(標記或引用按鈕)。如果狀態更改將表示當前狀態的按鈕設置爲OFF,請將發件人設置爲ON並將發件人保持爲當前狀態 – vadian

+0

感謝您的幫助。我創建的單選按鈕效果很好,但我想了解如何在引擎蓋下工作。兩個單獨的視圖如何獲取有關其狀態的信息,而它們只能將消息發送到viewController類。 –

回答

1

該按鈕位於視圖層次結構中,因此它可以詢問其superview。然後它可以迭代超級視圖subviews,查找類型單選按鈕的NSButton並比較action選擇器來構建組。