Постоянные данные между представлениями - PullRequest
2 голосов
/ 05 июня 2009

Итак, я прочитал большую часть книги Джеффа Ламарша и до сих пор не могу понять, что это ...

Как сохранить данные между различными представлениями? Например, со стандартным шаблоном «Утилиты», я хочу иметь возможность обмениваться переменными между передней и обратной сторонами ... Как это сделать?

(я также хочу записать эти переменные на диск, чтобы приложение не потеряло их при выходе, но, думаю, это другая история)

Ответы [ 3 ]

3 голосов
/ 05 июня 2009

Я думаю, вы, возможно, упускаете из виду тот факт, что ничего из этого не происходит по волшебству или «бесплатно». Суть в том, что вам нужно написать код для установки отношений и передачи данных между представлениями.

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

Возможно, самое простое - использовать AppDelegate в качестве подставки для вашей модели и контроллера.

Добавьте данные в определение вашего AppDelegate, а затем установите их из методов управления представлением и прочитайте их из кода установки представления. Это не красиво или умно, но оно сделает работу быстро и легко для вашего приложения Siple и позволит вам узнать другие вещи.

3 голосов
/ 05 июня 2009

Использовать шаблон MVC (Model View Controller).

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

Просмотр отображает вашу модель и пользователь может взаимодействовать с ней. Представление не применяет изменения к модели, представление только читает модель для отображения значений. View отправляет уведомления контроллеру о событиях (например, вы связываете нажатие кнопки с методом на контроллере). Контроллер обновляет вашу модель (увеличение / уменьшение переменных, выполнение действий, изменение имени пользователя и т. Д.).

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

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

То же самое касается сохранения / восстановления данных. Ваш контроллер может загрузить данные из файла или просто передать файл в вашу модель для инициализации. После инициализации модели представление запроса контроллера обновляется.

и т. Д.

Ознакомьтесь с шаблоном Model-View-Controller в документации Apple, он поставляется с примерами.

0 голосов
/ 12 июня 2009

На этом сайте есть отличная дискуссия о MVC.

В частности, посмотрите на ответ Клинта - и его описание добавления параметра в метод init вашего контроллера (например, initWarehouse:) - так вы можете передать модель между вашими представлениями.

Что касается сохранения - ту модель, которую вы передаете, можно записать с помощью одного из механизмов, описанных в книге, которую вы читаете.

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