2016-12-20 6 views
1

Я работаю над приложением чата. Я хочу сохранить состояние приложения для всех контроллеров.Как сохранить и восстановить состояние Использование раскадровки в iOS?

Мой код для хранения приложений состояния:

+ (UIViewController *)viewControllerWithRestorationIdentifierPath:(NSArray *)identifierComponents coder:(NSCoder *)coder 
{ 
MoreController *vc = nil; 
UIStoryboard *storyboard = [coder decodeObjectForKey:UIStateRestorationViewControllerStoryboardKey]; 
if (storyboard) 
{ 
     vc = (MoreController *)[storyboard instantiateViewControllerWithIdentifier:@"MoreController"]; 
     vc.restorationIdentifier = [identifierComponents lastObject]; 
     vc.restorationClass = [MoreController class]; 
} 
return vc; 
} 

- (void)encodeRestorableStateWithCoder:(NSCoder *)coder 
{ 
     [coder encodeObject:self.view forKey:@"save"]; 
     [coder encodeObject:_btnoiwii forKey:@"save"]; 

     [coder encodeObject:_tblMore forKey:kUnsavedEditStateKey]; 
      [super encodeRestorableStateWithCoder:coder]; 
} 

- (void)decodeRestorableStateWithCoder:(NSCoder *)coder 
    { 
    self.view = [coder decodeObjectForKey:@"save"]; 
    _btnoiwii= [coder decodeObjectForKey:@"save"]; 

    _tblMore = [coder decodeObjectForKey:kUnsavedEditStateKey]; 
    [super decodeRestorableStateWithCoder:coder]; 

    } 

Я могу закодировать состояние приложения, но не расшифровать. В добавлении делегата класс я добавил shouldRestoreApplicationState,willEncodeRestorableStateWithCoder

Пожалуйста, предоставьте мне подходящее решение для сохранения и восстановления состояния приложения в iOS.

+0

пожалуйста всякая помощь оцените. –

+0

Пожалуйста, помогите сохранить и восстановить состояние приложения в iOS –

+0

Зачем использовать тот же ключ для ** self.view ** и ** _ btnoiwii **? –

ответ

0

Вы не должны сохранять весь вид таблицы и просматривать супер-суперконтроль контроллера. Когда UIKit восстанавливает ваш контроллер просмотра, он автоматически восстанавливает все ваши взгляды. Убедитесь, что вы сохранили источник данных и при декодировании перезагрузите представление в таблице.

Если вы хотите восстановить показатели вашего Tableview, вы должны соответствовать этому протоколу, UIDataSourceModelAssociation и реализовать эти методы: indexPathForElementWithModelIdentifier, modelIdentifierForElementAtIndexPath

Также убедитесь, что вы восстанавливаете навигации стека, где ваши контроллеры просмотра нажаты.