2012-06-28 44 views
0

我在NSWindow上放了一個NSMattrix。 此NSMattrix包含2個單選按鈕。NSMattrix IBAction獲取選定的收音機

我聲明3 IBOutlets: - 一個NSMattrix - 每個單選按鈕(NSButtonCell)一個。

我聲明瞭1 IBAction方法:我在NSMattrix上的每個單選按鈕ant上鍊接了相同的方法。 當我更改單選按鈕的狀態時,會自動調用此方法。大。 但是當我想知道這個方法中每個單選按鈕的狀態時,狀態不好。

我該如何獲取事件方法中每個單選按鈕的狀態?

感謝

回答

1

如果你擁有了一切通過IBOutlets連接,你可以簡單的查詢,只要你希望自己的狀態的兩個按鈕(只要您的視圖控制器是擁有這些網點的人,或那些網點暴露他們通過「@property」訪問器)。

假設 「buttonOne」 和 「buttonTwo」 是 「IBOutlet」 UIButtons,你可以簡單地做:

- (IBAction) buttonAction: (id) sender 
{ 
    BOOL buttonOneIsOn = ([buttonOne state] == NSOnState); 
    BOOL buttonTwoIsOn = ([buttonTwo state] == NSOnState); 
} 

NSCell」(其中 「NSButtonCell」 從下降)有a very handy "state" method。我已經爲你鏈接了文檔。

+0

感謝您的回答。這就是我所做的。但是布爾沒有更新。我收到單選按鈕 – testpresta

0

對於這樣的情況,我強烈建議使用Cocoa Bindings;這實際上是使用綁定的更簡單方法之一。

使用綁定,可以爲您處理用戶界面同步。這意味着你並不需要查詢單選按鈕的狀態;您只需查詢該按鈕綁定的屬性即可。

而不是實施操作方法,你只需要屬性。例如,- (BOOL) radio1;,- (void) setRadio1:(BOOL) flag;,- (BOOL) radio2;- (void) setRadio2:(BOOL) flag;(但給這些方法更好的名稱比)。您可以在更高版本的Objective-C中使用@property。將BOOL字段放在您的班級中。

當您編輯您的NIB/XIB文件時,可以將屬性分配給單選按鈕。

通過鍵值編碼的規則,self.radio1是隱含意味着方法radio1setRadio1都被調用的路徑。如果您將它們重命名爲其他內容,請相應地調整路徑名稱。

當編輯您的NIB/XIB,依次選擇您的NSMatrix的每個鈕釦電池,並設置適當的結合:

  • 設置的值綁定到「文件的所有者」(如果這其中屬性實現) 。
  • 使用相應屬性的鍵路徑(如果有上述示例方法,則使用self.radio1self.radio2)。

NSMatrix已經設置爲一次只允許一個值,所以屬性值也會受到類似的限制。

+0

的「舊」狀態很抱歉,它不適用於綁定。我應該在「價值」部分綁定嗎? – testpresta

+0

是的,它在Value部分。 –

相關問題