UIImageView
ボタンクリックを追加しています。を使って復元したいUIKit
。次の場所で復元識別子を取得しています:
- (void)decodeRestorableStateWithCoder:(NSCoder *)coder;
どうすればこれをデコードできUIImageView
ますか?
UIImageView
ボタンクリックを追加しています。を使って復元したいUIKit
。次の場所で復元識別子を取得しています:
- (void)decodeRestorableStateWithCoder:(NSCoder *)coder;
どうすればこれをデコードできUIImageView
ますか?
状態の保存と復元を機能させるには、常に必要な 2 つの手順があります。
encodeRestorableStateWithCoder:
また、状態の保存と復元が必要なビューとdecodeRestorableStateWithCoder:
ビュー コントローラーに対しても実装する必要があります。
のView Controllerに次のメソッドを追加します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];
}
状態の保存と復元はオプションの機能であるため、次の 2 つの方法を実装して、アプリケーションに委任をオプトインさせる必要があります。
- (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
私は自分のアプリの1つでこのコードを使用しました。
これがエンコードとデコードのプロセスです
-(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];
}