Сохранение и восстановление состояния 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

Другие вопросы по тегам