1

私のアプリはサブビューをに書き込みますUIScrollView。これらのサブビューは、ユーザーが情報を入力するアプリケーションの他の部分にリンクされたボタンです。アプリ終了時のサブビューを含め、このデータを保存したいと思います。私のViewController(スクロールビューとそのすべてのサブビューを保存する)には、ストーリーボードに復元IDがあります。これをどのように使用しますか?これは私がこれまでに持っているものです:

AppDelegate.m

- (BOOL)application:(UIApplication *)application shouldSaveApplicationState:(NSCoder *)coder {

    return YES;
}

- (BOOL)application:(UIApplication *)application shouldRestoreApplicationState:(NSCoder *)coder {

    return YES;
}

ViewController.m

- (void)encodeRestorableStateWithCoder:(NSCoder *)coder {

    [super encodeRestorableStateWithCoder:coder];
    [coder encodeObject:self.scrollView forKey:@"scrollView"]; 
}

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

    [super decodeRestorableStateWithCoder:coder];
}
4

1 に答える 1

1

モデル ビュー コントローラーの設計 (または適切な設計) では、ビューを物理的に保存したくないため、ビューを再作成できる他のモデル データを保存したくありません。

あなたの短い説明に基づいて、NSCoding をサポートし、それが表すオブジェクトの状態全体を保存する独自のモデル オブジェクトを作成したいと思うでしょう。例えば:

基本データを格納するモデル オブジェクトを作成します (NSCoder を実装します)。

@interface ButtonInfo : NSObject <NSCoding>
@property(nonatomic, copy)NSString* title;
@property(nonatomic, assign)CGRect frame;
@property(nonatomic, retain)UIColor* color;
@end

保存時にビューからモデル データを生成するか、モデルをビューと一緒に保存することができます。

- (void)saveButtonInfos

または:

- (void)saveViews:(NSArray*)views
{
   NSMutableArray* toWrite = ...
   for (view in views)
   {
      // make button info from view, add to array.
   }
}

最後に、読み込み時にモデル データからビューを生成します。

- (void)loadViewsFrom:(NSArray*)buttonInfos
{
    for (info in buttonInfos)
    {
      // Create new button
      // modify properties
    }
}
于 2013-05-26T22:56:09.193 に答える