мне интересно, как можно было бы реализовать режим структуры, как одной Xcode 3 использует для конфигурации сборки:Реализация NSOutlineView/NSTableView с различными клетками (и типов данных) в строке
alt text http://img812.imageshack.us/img812/9467/xcodeoutlineview.png
При используя NSOutlineView/NSTableView со связями и NSTreeController/NSArrayController, столбцы представления получают привязки, назначенные, а не отдельные ячейки по очевидным причинам. Если каждая строка в столбце использует одну и ту же ячейку, то это кусок торта. Однако если каждая строка (потенциально) использует свой собственный тип ячейки (и с этой потенциально собственной коллекцией привязок), тогда все становится фанки.
Глядя на скриншот, можно ясно видеть, что ячейке текстового поля требуется только одно связывание для «значения». В то время как необходимо всплывающую кнопку ячейки по меньшей мере, один для «содержания», один для «contentValues » и последний, но не менее одного связывания для «SelectedIndex/selectedObject/SelectedValue». И клетке флажка нужна привязка для «значение» и (возможно) одна для «title».
Как можно сделать это с чистым (и маленьким) кодом, насколько это возможно?
(Или как можно было бы спросить:Как бы Apple, сделала это?)
...
Вот что я пробовал себя до сих пор:
я предоставить соответствующую (скопированную) клетку через [outlineView: dataCellForTableColumn: item:] и привязать их к отдельным моделям данных (из [item createdObject]). Я знаю точное количество данных (< 500 строк), отображаемых в виде контура, поэтому наличие одной ячейки в строке не должно быть слишком большой проблемой памяти, нет? Я получил данные для правильного отображения через привязки (yay!), Однако я не могу изменить ни одно из их значений. O_o Очевидно, изменение стоимости просто не доходит до модели данных. Это больше, чем простой [checkboxCell bind: @ "value" toObject: rowModel withKeyPath: @ "value" options: nil]? (Как это кажется достаточно для получать значения, но не для установки их соответствующим образом.)
Я не мог найти любую информацию по этой теме. Много информации и подсказок для использования пользовательских ячеек для каждого столбца, но не для их использования по принципу «для каждой строки». :(
Это сделало бы замечательный материал для учебника по какао, не так ли?;)
Существует также NSDictionaryController. Не знаю, как далеко это приведет тебя к этому, но посмотри. –
@Mike Это не столько проблема контроллера, сколько один вид таблицы, обрабатывающий его ячейки. Но спасибо в любом случае :) – Regexident
почти 5 лет спустя, и это была единственная информация, которую я смог найти о смешивании привязок с источником данных в таблице с разными ячейками: «Это создаст отличный материал для учебника Cocoa, не так ли?» , черт возьми! – rraallvv