2012-02-20 44 views
1

我只是試圖使用複選框來啓用/禁用NSTextField。我列出我試圖在細節的最後一個方法之下,但我已經嘗試過多種方式:可可綁定不按預期工作?試圖綁定NSTextField的啓用複選框狀態

  1. 使用的NSObjectController綁定到控制器和複選框和標籤綁定到NSObjectController選擇與財產的關鍵路徑內容對象控制器。有和沒有NSIsNil變壓器。

  2. 沒有將複選框和標籤綁定到控制器的NSObjectController與控制器中的BOOL屬性的鍵路徑。有和沒有NSIsNil變壓器。

  3. NSObjectController添加了鍵和「準備內容」設置複選框和標籤綁定到NSObjectController選擇和添加鍵路徑的關鍵。有和沒有NSIsNil變壓器。

我已經過了很多例子,閱讀文檔,並沒有運氣得到這個工作。

  1. 清潔項目可可項目。
  2. 將NSObjectController「對象控制器」添加到main.xib中。
  3. 在IB中將NSObjectController設置爲「準備內容」
  4. 將值「enableText」添加到鍵。
  5. 拖動複選框和標籤到視圖中。
  6. 將綁定添加到綁定到「對象控制器」的「值」的複選框,其中控制器關鍵字「選擇」和模式關鍵路徑「enableText」。此時,自動完成報告「找不到完成」!它應該找不到我添加到對象控制器的那個?
  7. 將綁定添加到綁定到「對象控制器」的「已啓用」的標籤上,其中帶有控制器關鍵字「選擇」和模式關鍵路徑「enableText」。同上。

運行和它崩潰。如果我將標籤綁定設置爲具有NSIsNil的Transformer或它提供的任何選項,它不會崩潰,但是複選框不會更改標籤的啓用狀態。崩潰結果如下。

值得注意的是,如果我還在標籤值和與啓用的綁定相同的鍵之間添加了綁定,則當我切換複選框時,標籤內容會在0和1之間切換。所以,這看起來應該很容易適用於已啓用的綁定......但事實並非如此。

2012-02-20 23:43:58.273 TestBindings2[12346:903] -[_NSControllerObjectProxy copyWithZone:]: unrecognized selector sent to instance 0x10
2012-02-20 23:43:58.275 TestBindings2[12346:903] An uncaught exception was raised 
2012-02-20 23:43:58.276 TestBindings2[12346:903] -[_NSControllerObjectProxy copyWithZone:]: unrecognized selector sent to instance 0x10
2012-02-20 23:43:58.278 TestBindings2[12346:903] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[_NSControllerObjectProxy copyWithZone:]: unrecognized selector sent to instance 0x10' 

使用XCode 4.2和OSX 10.6.8。

回答

1

只是試圖以與「啓用」完全相同的方式綁定標籤的「隱藏」,它確實隱藏了它。這讓我意識到我正在用綁定正確地做事。我試圖手動禁用該標籤,並看到這沒有做任何事情。然後我看到某個地方說標籤是啓用的NSTextFields,這表明它們不能被禁用的可能性。果然,將標籤更改爲文本字段並且功能按預期工作。

相關問題