2012-01-19 3 views
1

У меня есть приложение, которое заполняет представления списка при создании представления. Я хотел бы иметь возможность перемещаться с помощью кнопки «Назад» и вернуться к предыдущему экрану, и данные, которые были перечислены, все еще существуют. Это возможно?Можно вернуться к предыдущему виду с помощью Nav Bar и не потерять данные View?

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

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

Спасибо.

ответ

0

Вы можете также используйте NSUserDefaults для хранения данных вместо Core Data. Это зависит от данных, которые вы планируете хранить.

Update 1 Ниже приведен пример использования NSUserDefaults

NSUserDefaults* defaults = [NSUserDefaults standardUserDefaults]; 
NSMutableArray* recentlyViewedPhotos = [[defaults objectForKey:@"recentlyViewedPhotos"] mutableCopy]; 
//Edit your object here 
[defaults setObject:recentlyViewedPhotos forKey:@"recentlyViewedPhotos"]; 
[defaults synchronize]; 
+0

NSUserDefaults может работать, если он может обрабатывать массивы. (похоже, это может быть) Мне придется поиграть с ним и узнать. Core Data немного сложнее, чем мне нужно. –

+0

Я сохранил NSArray NSDictionary в NSUserDefaults без каких-либо проблем. –

+0

Я где-то читал содержание массива. Если у меня есть массив классов, это отбросит его, поскольку ему не нравится массив значений NSUserDefaults? то есть. строка, данные, int и т. д. –

2

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

+0

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

+0

ознакомьтесь с [основным руководством по программированию данных] (http://developer.apple.com/library/mac/#documentation/cocoa/conceptual/coredata/cdprogrammingguide.html). В основном вместо настройки того, как вы сохраняете состояние каждого контроллера представления, вы храните данные, которые используются для создания представления, и перезагружайте данные из хранилища данных при каждом создании представления. – wattson12

Смежные вопросы