Как обрабатывать связь какао между несколькими классами контроллеров - PullRequest
2 голосов
/ 09 октября 2011

Я новичок в Какао, возможно, эти вопросы очень простые. В настоящее время я разрабатываю приложение для Mac, которое использует NSTabView, где вы можете переключаться между «приложением», «опциями» и «статистикой».

Теперь мой подход заключается в создании трех классов контроллеров, AppControler, OptionsController и StatisticsController. Я создал для них объекты в файле .xib и связал соответствующие элементы пользовательского интерфейса с правильными объектами контроллера.

Мои вопросы: Это правильный путь, имея несколько объектов контроллера для NSTabView? - Когда я хочу, чтобы AppController получил информацию о параметрах, как я могу установить связь между App- и OptionsController?

Спасибо!

Ответы [ 3 ]

5 голосов
/ 09 октября 2011

Я много боролся с этими типами вопросов, когда начинал разработку Cocoa. В конце концов я обнаружил, что нет реального ответа. В Какао и Objective-C существует так много способов снять шкуру с кошки, что, в конце концов, это действительно зависит от вас.

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

Это простое и эффективное решение на мой взгляд. В итоге вы получите циклические ссылки между контроллерами, но код загрузки / выгрузки NIB Objective-C позаботится обо всем этом за вас.

1 голос
/ 11 октября 2011

Для представлений вкладок я обычно просто делаю один контроллер для всех вкладок в этом окне, хотя я, вероятно, разделил бы его, если бы использовал более 3 или 4 вкладок, и каждая вкладка требовала значительного количества кода для обрабатывать действия и выходы.

0 голосов
/ 09 октября 2011

Обычно используется парадигма MVC.В вашем случае, если один контроллер создает или изменяет какой-либо параметр, вы устанавливаете его в модели каким-либо образом (может быть так же просто, как установлены некоторые пользовательские настройки по умолчанию), а если он используется в другом месте, вы читаете его из модели.

...