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

Мой вопрос о том, как лучше всего осуществить передачу информации между UIViewControllers.

Если у меня есть приложение с двумя ViewControllers и, например, пользователь выбирает элемент в ViewControllerA, который должен затем показать элемент и многое другоеподробности в ViewControllerB.

Каков наилучший способ реализовать это?через appdelegate?или путем передачи ссылки на ViewControllerA в ViewControllerB?Цените любую помощь или примеры лучшего способа сделать это.

Ответы [ 2 ]

1 голос
/ 24 сентября 2010

ViewControllerA (VCA) будет поддерживать ссылку на ViewControllerB (VCB). VCB будет поддерживать ссылку на выбранный объект как ивар. Когда пользователь выбирает объект в VCA, VCA создает экземпляр VCB (если еще не создан), устанавливает для этого объекта свойство selectedObject VCB, а затем отправляет VCB. VCB выполняет чтение из объекта, назначенного его свойству selectedObject, для извлечения его информации в представление.

В VCA для каждого из «элементов», которые может выбрать пользователь, должен быть экземпляр базового объекта, поддерживающий этот элемент. Например, UITableView может быть поддержан NSArray of Vegetable объектов, если пользователь выбирает из списка овощей.

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

0 голосов
/ 24 сентября 2010

Попробуйте использовать шаблон проектирования MVC. Поместите всю информацию общего состояния в объект Model (M of MVC), созданный на более высоком или верхнем уровне вашего приложения. При создании двух ваших контроллеров представления предоставьте им доступ к объекту модели (установив свойство в каждом контроллере представления). Затем контроллеры представления могут хранить и получать доступ к любому необходимому общему состоянию, и вы будете иметь его централизованно для отладки, хранения, расширения, повторного использования и т. Д.

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