2014-02-25 47 views
1

我是Mac開發新手。我有一些控件的對話框。需要根據無線電選擇啓用/禁用這些控件。我這樣做的方法是爲每個控件創建IBOutlet變量,然後在收音機選擇更改時調用控件的SetEnabled()。它一切正常,但現在有8個IBOutlet變量,然後有8個語句來設置它們的狀態。想知道是否有不錯方式通過綁定來做到這一點?將NSTextField的Enabled屬性綁定到BOOL屬性

我聲明瞭BOOL屬性typeOneEnabled並將NSTextField的啓用綁定設置爲文件所有者>> typeOneEnabled。以爲它會改變啓用狀態,當屬性改變,但似乎並不奏效。我在這裏錯過了什麼或者它不可能?

// in header I have 
BOOL typeOneEnabled; 
@property BOOL typeOneEnabled; 

// in mm file 
@synthesize typeOneEnabled 

// then to change the property val in a method 
self.typeOneEnabled = someval; 

我記得以前和設置屬性值之後把一些代碼,馬上,但它沒有工作,我恢復了。與WithKey有關:@「typeOnEnabled」。

+0

你能顯示一些代碼嗎?它應該可以工作,但前提是所有對typeOneEnabled變量的訪問都符合KVO標準。 – Volker

+0

@Volker:我在問題中添加了一些代碼。 – A9S6

+0

這看起來不錯。你是否也將文本字段值綁定到屬性? – Volker

回答

1

如果enabled綁定用於NSTextField和相關請確保綁定BOOL屬性總是通過使用setter方法或點語法通過KVO訪問器進行訪問。還要確保如果'NSTextField'值也綁定到一個屬性,值綁定確實禁用Conditionally Sets Editable。否則,這導致啓用控制。

相關問題