Как мне реализовать настроенный список в Какао? - PullRequest
5 голосов
/ 10 августа 2009

Я хочу создать Какао-приложение со списком записей, очень похожих на список дел в Things.app ( см. Скринкаст ). Вопрос в том, стоит ли мне использовать

  1. TableView,
  2. CollectionView или
  3. Веб-просмотр.

Я думаю, что он может работать со всеми из них, но какой из них лучше всего подходит для следующих требований?

  • есть список записей -> 1 столбец и много строк
  • переупорядочение с помощью перетаскивания
  • выбрать отдельные записи и использовать ключи для таких действий, как удаление
  • открыть запись: строка должна расшириться, чтобы показать больше полей ввода
  • индивидуальный вид: закругленные углы, тень, градиент фона

Пока что мое исследование говорит о том, что TableView обладает большей частью функциональности, но его сложнее настроить по внешнему виду, CollectionView не имеет функции перетаскивания (верно?), Но его легко спроектировать, а WebView займет много времени. чтобы не повредить пользовательскому интерфейсу, и я не могу привязать свою модель непосредственно к полям ввода.

Какие плюсы и минусы мне не хватает и что бы вы порекомендовали использовать?

Ответы [ 5 ]

4 голосов
/ 10 августа 2009

WebView не имеет смысла. Вы также можете создать веб-приложение, если используете WebView. NSCollectionView - это больше для данных, подобных сетке, например телепрограмм в час.

NSTableView является единственным, который имеет смысл в этом случае. Я реализовал все 5 пунктов с помощью NSTableView без проблем. Вам нужно расширить NSTableView и сделать несколько пользовательских рисунков для настроенного вида. Это самая сложная часть.

2 голосов
/ 10 августа 2009

Есть люди, которые уже сделали это. Один из них, который я успешно использовал, принадлежит Маттео Бертоцци и доступен здесь: http://th30z.netsons.org/2009/03/cocoa-sidebar-with-badges-take-2/ Для правильной работы массажа может потребоваться бит (особенно если вам нужно сложное перетаскивание и -процедурное поведение), но для основных функций, таких как получение заголовков разделов и элементов в списке, он работает превосходно.

Редактировать: появляется перед и является распространенным вопросом в списке рассылки cocoa-dev. Вот еще несколько вариантов .

2 голосов
/ 10 августа 2009
  • открыть запись: строка должна расшириться, чтобы показать больше полей ввода

Вам нужен контурный вид . Представление таблицы для плоских списков.

Обратите внимание, что NSOutlineView является подклассом NSTableView, поэтому все функции табличного представления также работают с контурным представлением.

1 голос
/ 11 августа 2009

Просто взглянул на сам Things.app, используя «F-скрипт где угодно».

Они использовали подкласс NSTableView, который называется «DetailTableView», который представляет сжатые элементы todo. Свернутые элементы todo реализуются с помощью пользовательской ячейки под названием «ToDoCell», но интересный расширенный вид, который вы получаете при редактировании В этом случае у них есть пользовательское представление с именем «ToDoEditView», которое при необходимости добавляется как подпредставление DetailTableView. Я подозреваю, что это представление редактирования временно добавляется как подпредставление в правильном месте, и соответствующая строка представления таблицы временно изменяется, пока она присутствует.

Все довольно умозрительно ... Я бы хотел узнать подробности того, как это было сделано. Это потрясающий интерфейс.

0 голосов
/ 10 августа 2009

Я подхожу к той же проблеме в своем приложении (с одним большим списком, похожим на список дел Things), и я думаю, что представление таблицы будет иметь здесь большой смысл.

Хитрость в том, что ваши ячейки ("строки") расширяются при двойном щелчке. Это все, что я уже сделал.

...