0

プッシュ元のView Controllerによって設定されたプロパティを取得するView Controllerがあります。

基本的に、私は次のようなものを持っています

- (void)doStuff {
    [self performSegueWithIdentifier:@"segueToThing" sender:self];
}

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
    if([[segue identifier] isEqualToString:@"segueToThing"])
        [(ThingViewController *)[segue destinationViewController] setImportantData:[self importantData]];
}

問題は、プッシュThingViewControllerしてから別のView Controllerをその上にプッシュすると、メモリ警告が発行され、ThingViewControllerアンロードされてメモリが解放されることです。次に、3 番目のビュー コントローラーをポップすると、ThingViewController再び読み込まれますがimportantData、セグエで設定したプロパティは、セグエがnil再び起動されなかったためです。

これについてどうすればよいですか?すべての状態をどこかに保存することになっていますか?

4

2 に答える 2

0

そのメモリを解放したくない場合は、メモリ警告または viewDidUnload で解放しないでください。

メモリを解放する必要がある場合は、データを永続化し、VC が戻ってきたときに再読み込みします。

于 2012-08-07T09:26:21.040 に答える
-3

おそらく、重要なデータをAppDelegate? AppDelegate.h ファイルで、NSDataオブジェクトまたは保存する必要のあるオブジェクトを宣言します。次に、次のようなprepareForSegue参照を取得します。AppDelegate

AppDelegate *appDel = [[UIApplication sharedApplication] delegate];

次に、AppDelegate に保存した変数を使用してオブジェクトを保存します。次に、2 番目のビューが再び読み込まれたら、AppDelegate を再度呼び出して、App Delegate からのデータを使用します。うまくいけば、それが役に立ちます。さらにサポートが必要な場合、または不明な点がある場合はお知らせください。

于 2012-08-07T08:35:53.557 に答える