我在維護NSTableView
上的選擇時遇到問題。我正在使用xCode 8.3.3與Swift 3.1併爲macOS構建。如何使用「將內容作爲複合值處理」來維護TableView選擇
基於單元格的tableView是在IB中創建的,並且在表格的第一列中有一個NSButtonCell
(複選框)。此列綁定到ModifiersController.arrangedObjects.enabled
。該複選框的功能與預期相同,意味着它可以正確檢查和取消選中。
問題是,當我通過單擊它來更改複選框的狀態時,所選行變爲未選中狀態,並且第一行變爲被選中狀態。無論在更改複選框時選擇哪一行,它始終是選中的第一行。
我希望發生的是檢查/取消選中該框不應該影響選定的行(突出顯示)。
的ArrayController被命名爲 'ModifiersController',其Content Array
勢必名爲MinimizeModifiers
一個User Defaults Controller
關鍵。 MinimizeModifiers
是一個值爲Value Transformer
的字典。由於這一點,我已啓用對複選框手柄內容作爲複合值
當把手內容作爲複合值被關閉(禁止),在表中選擇被適當地維持,但底層代碼(綁定到UserDefaults)不起作用。
當把手含量複合值是上,UI元素值正確綁定到UserDefaults,然而,這是什麼似乎導致表失去當前選擇。
所以,問題是: 如何保持表格行選擇處理內容作爲複合值已啓用?
補遺
的的tableView勢必selectionIndexes
和陣列控制器被設置爲preserve selection
(I也曾嘗試用preserve selection
斷,並用「避免空選擇」無論在關閉 - 沒有成功)。
而且迷你電影顯示問題(如果允許的話)的鏈接... https://www.rgbworld.com/images/stackoverflow/selection.m4v
Addendum2
我已經更新了代碼的Xcode 9和Swift 4,問題依然存在。我相信這個問題可能與我使用KVO和/或使用支持變量用於我的@objc dynamic var
s
我創建了一個github存儲庫,以防有人可以幫忙。我將爲幫助我解決此問題的開發者添加一筆賞金。
Githib回購
https://github.com/rgbworld/CompoundTransformer https://github.com/rgbworld/CompoundTransformer
你的表視圖,以陣列控制器的結合「選材指標」? 'Preserve Selection'是否打開? – Willeke
@Willeke感謝您的回覆。是和是。我已更新問題以顯示設置。 – rgbworld
我無法重現此問題,但點擊複選框不會觸發保存數據。奇怪的是,當我試圖找出表視圖如何處理選擇,我最終在這個問題相同的方法[如何使NSArrayController保留自定義對象的選擇工作?](https:// stackoverflow。 COM /問題/ 46233759 /如何對化妝NSArrayController的-preservesselection工作換定製對象)。 – Willeke