Сохранить состояние просмотра после перезагрузки - PullRequest
1 голос
/ 07 декабря 2011

Я занимаюсь разработкой приложения для iPad, которое представляет собой последовательность пользовательских инструкций, имитирующих реальный системный тест, с возможностью внесения изменений в каждое представление в случае сбоя компонентов (с указанием проблем, которые необходимо будет решить).

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

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

Есть ли способ сделать это? Или мне нужно принципиально пересмотреть мой дизайн?

1 Ответ

1 голос
/ 07 декабря 2011

Вам нужны объекты модели для ваших видов. Это могут быть как словари, так и пользовательские классы для каждого представления.

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

Это соответствует доминирующей парадигме какао Model-View-Controller (см. Также: Шаблоны проектирования какао ); ваши представления отображают информацию, ваши модели хранят информацию, а контроллеры являются посредниками и выполняют преобразование между ними.

Способ обновления модели в представлении во многом зависит от дизайна вашей модели. Вот макет, который может или не может быть полезным. Все вещи с именем xField являются выходами на UITextField s.

// When the view is taken off screen
- (void) viewWillDisappear {

    // Assume that when created, view controller is given a pointer 
    // to the relevant model object (probably by the previous view
    // controller)
    [model setNameOfHorse:[[self horseNameField] text]];
    NSUInteger newBetValue;
    newBetValue = [[dollarValueFormatter 
                        numberFromString:[[self betField] text]] 
                    unsignedIntegerValue];
    [model setBet:newBetValue];
    [model setNote:[[self noteField] text];
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...