Поддержание ViewController в том же состоянии / сохранение его в фоновом режиме? - PullRequest
4 голосов
/ 13 марта 2012

В настоящее время я работаю в приложении с несколькими представлениями, более 30 ViewControllers. Я использую раскадровку, чтобы соединить поток представлений вместе.

Мне бы хотелось, чтобы при переходе пользователя от одного ViewController к его представлению он оставался в том же состоянии с теми же изменениями, что и пользователь. (в UITextFeild, UILabel, UITextView и т. д.)

Я, поскольку у меня так много просмотров, было бы идеально, если бы не нужно было хранить информацию в глобальных переменных или с:

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];

Спасибо заранее, Привет

Ответы [ 2 ]

2 голосов
/ 13 марта 2012

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

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

1 голос
/ 13 марта 2012

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

К счастью, что-то подобное уже есть в iOS - UINavigationViewController . Он предоставляет такие методы, как -

– pushViewController:animated:
– popViewControllerAnimated:
– popToRootViewControllerAnimated:
– popToViewController:animated:

Этот урок расскажет вам, как реализовать это в вашем проекте. Поэтому вместо того, чтобы связывать viewControllers через storyBoard, я предлагаю вам закатить рукав и реализовать все это в коде. Надеюсь это поможет.

...