Сохранение и восстановление состояния UIImageView добавлен из события кнопки
Я добавляю UIImageView
по нажатию кнопки. Я хочу восстановить его, используя UIKit
, Я получаю идентификатор восстановления в:
- (void)decodeRestorableStateWithCoder:(NSCoder *)coder;
Как я могу расшифровать это UIImageView
?
2 ответа
Я использовал этот код в одном из моих приложений.
вот процесс кодирования и декодирования
-(void)encodeRestorableStateWithCoder:(NSCoder *)coder
{
NSData *imageData=UIImagePNGRepresentation(self.imgViewProfilePicture.image);
[coder encodeObject:imageData forKey:@"PROFILE_PICTURE"];
[super encodeRestorableStateWithCoder:coder];
}
-(void)decodeRestorableStateWithCoder:(NSCoder *)coder
{
self.imgViewProfilePicture.image=[UIImage imageWithData:[coder decodeObjectForKey:@"PROFILE_PICTURE"]];
[super decodeRestorableStateWithCoder:coder];
}
Для выполнения государственных консервационных и реставрационных работ всегда необходимы два шага:
- Делегат приложения должен зарегистрироваться
- Каждому контроллеру представления или представлению, которое будет сохранено / восстановлено, должен быть назначен идентификатор восстановления.
Вы также должны реализовать encodeRestorableStateWithCoder:
а также decodeRestorableStateWithCoder:
для представлений и контроллеров представления, которые требуют, чтобы состояние было сохранено и восстановлено.
Добавьте следующие методы к контроллеру представления вашего UIImageView
,
-(void)encodeRestorableStateWithCoder:(NSCoder *)coder
{
[coder encodeObject:UIImagePNGRepresentation(_imageView.image)
forKey:@"YourImageKey"];
[super decodeRestorableStateWithCoder:coder];
}
-(void)decodeRestorableStateWithCoder:(NSCoder *)coder
{
_imageView.image = [UIImage imageWithData:[coder decodeObjectForKey:@"YourImageKey"]];
[super encodeRestorableStateWithCoder:coder];
}
Сохранение и восстановление состояния является необязательной функцией, поэтому необходимо разрешить делегирование приложения, реализовав два метода:
- (BOOL)application:(UIApplication *)application shouldSaveApplicationState:(NSCoder *)coder
{
return YES;
}
- (BOOL)application:(UIApplication *)application shouldRestoreApplicationState:(NSCoder *)coder
{
return YES;
}
Полезная статья о сохранении государства: http://useyourloaf.com/blog/2013/05/21/state-preservation-and-restoration.html