Делегаты Sheet и WindowController - это хороший подход? - PullRequest
0 голосов
/ 16 июня 2011

Я использую лист, чтобы запросить у пользователя некоторую информацию об операции, которую выполняет приложение. На листе имеется от 10 до 15 параметров (разделенных на 4 вкладки, так что это относительно чистый пользовательский интерфейс), которые остальная часть программы должна знать перед продолжением.

Сейчас у меня есть отдельный класс оконного контроллера для листа с именем SheetController. SheetController имеет свойство делегата, а основной контроллер, AppController, устанавливается в качестве делегата.

Когда пользователь нажимает кнопку OK на листе, делегат получает уведомление и выполняется метод с именем didClickDone:(id)sender withParameters:(id)parameters. parameter - это объект, который содержит различные свойства листа. У меня вопрос: это хороший подход к обработке листов и возвращению данных из них?

Во-вторых, меня беспокоит то, что parameter - просто мертвый объект - у него есть только методы доступа. Он не выполняет никаких манипуляций с ними, поскольку его цель - «перенести» данные на главный контроллер, который, в свою очередь, передает информацию в модель программы. И, если я что-то упускаю, разве я не должен просто объявить parameter нормальной структурой C? Или есть преимущество использования объекта для такого рода целей?

РЕДАКТИРОВАТЬ: Будет ли передача NSDictionary хорошим компромиссом? Я мог бы сохранить возвращенную информацию с их ключами в словаре и просто передать ее.

1 Ответ

0 голосов
/ 17 июня 2011

Может быть, я бы не стал уведомлять контроллер напрямую из обработчика событий кнопки, но вызовите другую подпрограмму, которая включает в себя логику о том, как данные должны быть переданы в модель.

Не беспокойтесь о пустом объекте. Типичный шаблон для его использования и называется DataTransferObject

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