1

UIImageViewボタンクリックを追加しています。を使って復元したいUIKit。次の場所で復元識別子を取得しています:

 - (void)decodeRestorableStateWithCoder:(NSCoder *)coder;

どうすればこれをデコードできUIImageViewますか?

4

2 に答える 2

1

状態の保存と復元を機能させるには、常に必要な 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

于 2014-02-18T19:55:02.107 に答える
1

私は自分のアプリの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];

}
于 2014-02-18T19:56:16.533 に答える