2009-12-09 48 views
5

我有一個NSWindow包含一個NSButton和一個NSTableView。基於NSTableView選擇啓用帶綁定的NSButton

我希望按鈕被啓用當且僅當表中至少包含一個項目,並且只選擇一個項目。 (該表不允許多個選擇。)

我該如何將按鈕的啓用綁定綁定到這種情況?

+3

這聽起來極像是一個移除/刪除按鈕的典型方式被啓用。綁定到控制器的-canRemove屬性是否足夠? –

+1

您是否考慮切換到陣列控制器?它使這樣的事情變得非常簡單。 –

回答

2

嘗試綁定到陣列控制器的selectedObjects,模型關鍵路徑count,沒有值轉換器。

需要注意的是,如果你允許多項選擇,這將是不安全的:一方面,在count可以很容易地既不YES也不NO;另一方面,如果用戶選擇了256個項目的倍數,則計數的最低字節將爲0,因此即使存在選擇,值BOOL也將爲NO

+1

我沒有ArrayController任何地方。表格視圖使用委託和數據源。 –

+4

然後使用綁定對於這種情況有點無意義,不是嗎?爲選擇按鈕創建一個插座並直接設置其啓用狀態(通過委託消息)。 –

+1

或者在模型中創建一個屬性'buttonEnabled'並綁定到該屬性。如果你真的想綁定到'NSTableView',你可以在'-awakeFromNib'方法中綁定'enabled'屬性到表視圖的'selectedRowIndexes.count'屬性。 –

14

這是一個古老的線程,但這裏是我的2美分: 使用和陣列控制器和按鈕的啓用狀態結合到

控制鍵:的selectedObjects 型號主要路徑:@count

工作正常。

+0

在這裏的所有信息中,這是唯一適用於我的技術。 –

+0

謝謝..我正要編寫一些代碼來創建一個新的布爾屬性:) –

+0

不要忘記將表視圖的選擇綁定到數組控制器,而不僅僅是內容。 –

1

今天我遇到了這個問題,經過一番努力,我找到了它。

如果沒有在「主表」選擇我的按鈕應該被禁用:

問題我跑進:

  • 使用實際的按鈕,而不是封閉的鈕釦電池
  • 指定NO = disabled對於多個值,沒有選擇等
  • Enabled屬性綁定到主表的選擇並使用屬性(code在我的情況),它是存在的。
  • 使用變壓器NSIsNotNil啓用按鈕,如果在主表中選擇了某些東西。

enter image description here

相關問題