Пользовательский вид записи в приложении какао - PullRequest
0 голосов
/ 15 марта 2011

Я хочу создать собственное представление в приложении Какао. В основном это представление записей, в котором данные из нескольких полей базы данных отображаются в виде длинного списка. Вот быстрый макет: record view mockup

Теперь нужно рассмотреть несколько вещей:

  • Число и тип полей являются динамическими
  • Поля могут быть отформатированы по-разному (короткие поля находятся в одной строке, длинные поля - в отдельном абзаце. В будущем изображения также могут быть включены).
  • Текст недоступен для редактирования, но его можно выбрать, чтобы пользователи могли его скопировать

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

Мне приходит в голову несколько идей:

  1. Просто используйте WebView и создайте макет как HTML. У меня большой опыт работы с HTML, поэтому верстка должна быть простой. С другой стороны, это похоже на грязный хак.
  2. Используйте NSAttributedString. Поскольку этот макет в основном текстовый, это должно быть возможно. Тогда просто поместите это в только для чтения NSTextView. Может быть трудно получить макет, идеально подходящий для пикселей.
  3. Создавайте множество NSTextField s и NSBox es программно. Макетирование будет сложным и потребует много математики (но я люблю математику, так что все в порядке)
  4. Создание пользовательского вида и рисование в drawRect:

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

Ответы [ 2 ]

1 голос
/ 15 марта 2011

WebView, пожалуй, самое быстрое решение для вас.
И самое главное, пользователь никогда не заметит его.
Только поведение выбора может быть менее удобным.

Другие решения (возможно, лучше)и очиститель ', однажды реализованный правильно):

NSTabeView с пользовательскими ячейками:
http://www.martinkahr.com/2007/05/04/nscell-image-and-text-sample/
http://juliuspaintings.co.uk/cgi-bin/paint_css/animatedPaint/070-NSTableView-ImageAndTextCell.pl

NSScrollView с пользовательскими NSView:
http://juliuspaintings.co.uk/cgi-bin/paint_css/animatedPaint/022-NSCollectionView-random.pl

Когда вы получите некоторый опыт работы с NSTabeView / NSScrollView / NSScrollView,
их практически проще и быстрее реализовать, чем WebView:)

0 голосов
/ 15 марта 2011

Используйте NSTextField или NSTextView и установите для редактируемого значения NO и оставьте выбираемый включенным.

...