Создание приложения мастер-детали с использованием NSTreeController, NSArrayController и Core Data - PullRequest
5 голосов
/ 02 декабря 2011

Я прихожу из iOS и пытаюсь создать самое простое приложение OS X для всех деталей, но мне трудно переходить.Более конкретно, я не могу понять, как я интегрирую Базовые Данные с NSTableView, используя NSArrayController;

Приложение в настоящее время выглядит так: Contacts app

Моя модель данных выглядит следующим образом:

enter image description here

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

Мне удалось подключить NSOutlineView к простому NSArray, но что лучшеспособ подключить его ко всем объектам группы, используя NSTreeController, и сделать все это редактируемым?

Ответы [ 2 ]

3 голосов
/ 03 декабря 2011

Добавьте NSArrayController и подключите его к вашей Group сущности (назовите ее GroupController). Выберите столбец таблицы в левом исходном представлении и перейдите к инспектору привязок. Выберите раздел Value и привяжите его к GroupController, установив флажок. Завершите привязку, установив от Controller Key до arrangedObjects и Model Key Path до title.

Добавить еще NSArrayController (PersonsController). Перейдите к инспектору привязок и выберите раздел под названием Content Set. Выберите ваш GroupController из выпадающего списка и установите флажок для привязки PersonsController к GroupController. Завершите привязку, установив Controller Key в selection и Model Key Path в persons. Это позволит найти лиц, подключенных к выбранной группе, в PersonsController

Затем вы можете привязать табличное представление в правой части окна к PersonsController. Подключите каждый столбец таблицы к PersonsController (firstName, lastName).

Возможность редактирования можно задать на уровне столбцов табличного представления вашей сущности Person.

РЕДАКТИРОВАТЬ: Ой, просто перечитайте свой вопрос и увидите, что вы хотите NSTreeController. Я думаю, что вы можете заменить GroupController - обычный NSArrayController - на NSTreeController. Я не вижу никаких иерархий в вашей группе. Здесь - хорошее руководство с кодом для контроллера дерева, который поддерживает объекты с иерархиями.

EDIT2: Еще один хороший учебник - пример Apple SourceView . В нем показано, как настроить представление исходного кода с помощью NSTreeController. Этот источник данных привязан к файлу на основе NSDictionary, но, используя другой учебник и описание обязательных привязок в моем ответе, вы сможете это сделать.

0 голосов
/ 05 апреля 2013

Также взгляните на пример кода SourceView:

https://developer.apple.com/library/mac/#samplecode/SourceView/Introduction/Intro.html

Он использует NSOutlineView, управляемый NSTreeController.

...