Могу ли я запрограммировать стол, чтобы он выглядел как стол - PullRequest
0 голосов
/ 21 января 2010

Можно ли создать таблицу (TableView) и отобразить в ней значения для трех столбцов: - Col1, Col2, Col3 с N значениями под этими тремя столбцами?

Кол1 Кол2 Кол3
Значение1 Значение1 Значение1
Значение2 Значение2 значение2
Значение3 Значение3 Значение3
.... ... ...
.... ... ...
.... ... ...
Valuen Valuen Valuen

Теперь я не могу понять, как я могу кодировать MutableDictionary и / или MutableArray, чтобы делать что-то подобное.

Я новичок в программировании какао и цель-c. Любой пример кода точки, на который я могу посмотреть?

Буду благодарен.

Ответы [ 3 ]

4 голосов
/ 21 января 2010

Ответ Мэтта Б. технически верен, но я бы сказал, что для кого-то, кто "новичок в программировании какао и цели-с", эти привязки могут быть слишком много волшебства, чтобы поначалу их воспринимать. (Черт, я занимаюсь какао уже 2 года, и я только начинаю понимать их)

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

Основная идея состоит в том, что NSTableView знает, как рисовать, а не , что рисовать. Итак, что мы делаем, мы даем NSTableView объект «делегат», и табличное представление спрашивает делегата, сколько у него строк, что находится в каждой строке и т. Д.

Сам объект делегата - это объект, который знает, что должно быть в табличном представлении, но не знает, как его нарисовать. Он соответствует протоколу NSTableViewDataSource (эквивалент Java-интерфейса). Таким образом, NSTableView имеет стандартный набор методов, которые он может использовать для запроса делегата и запроса необходимой ему информации.

2 голосов
/ 21 января 2010

Теперь я не могу понять, как я могу кодировать MutableDictionary и / или MutableArray, чтобы делать что-то подобное.

Словарь здесь совершенно бесполезен.

Вам нужно сделать объектом, который моделирует , что вы хотите перечислить в таблице. Каждая строка соответствует одному из этих объектов, который вы, скорее всего, будете хранить в массиве. Столбцы соответствуют свойствам объектов модели.

Самая распространенная иллюстрация - это список людей (например, сотрудников). Каждая строка в табличном представлении отображает один объект Person. В каждом столбце отображается одно свойство этого объекта: имя, фамилия, возможно, название компании, номер телефона и т. Д. Обе привязки и протокол источника данных табличного представления разработаны для наилучшей работы (то есть большинство легко) таким образом.

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

Какао разработано вокруг Model-View-Controller ; Работайте с ним, предоставляя модель, и вы найдете все в Какао намного проще.

(И нет, словарь будет недостаточным в качестве объекта модели. Он не поможет вам с AppleScript или привязками, а также не даст вам результата, если вы захотите сделать объекты модели умнее, чем просто блок из простые свойства «ключ-значение». Производные свойства, поведение и пользовательские инициализаторы в лучшем случае являются безобразными взломами при реализации в словарях.)

1 голос
/ 21 января 2010

Ключевое слово, которое вы ищете здесь: bindings . Поначалу привязка к какао может показаться немного похожей на voodoo, но это фактический способ представления содержимого массива в виде таблицы. И это совершенно изумительно, как только вы овладеете им.

В Google по запросу Обучающее руководство по привязке NSTableView выводится большое количество страниц. Этот урок от CocoaDevCenter действительно хорош (как и большинство их вещей - привязки - это сложная тема, некоторые из их более ранних руководств тоже могут быть полезны).

Документы Apple немного плотнее, но также могут быть полезны.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...