4

ストーリーボードは使用していません。そして現在ViewController1にあります。ここでは、ボタン クリック イベントでこのコードを呼び出します。

InnerViewController *innerVc = [[InnerViewController alloc]  initWithNibName:@"InnerViewController" bundle:nil titleText:@"vaibhav"];
    UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController:innerVc];
    nav.restorationIdentifier = @"innerNavSR";
    [self.navigationController presentViewController:nav animated:YES completion:nil];

そして、InnerViewControllerrestorationIdentifierrestorationClass与えられます。私はrestore.likeのために書かれた適切な方法を持っています

viewControllerWithRestorationIdentifierPath
encode and decode restoration. 

私が変更した場合

[self.navigationController presentViewController:nav animated:YES completion:nil];

[self.navigationController pushViewController:innerVc animated:YES];

それは正常に動作します。現在の何が欠けているか、または間違っていますか。試しに、私もこれを試しました:

[self presentViewController:nav animated:YES completion:nil];

しかし、役に立たない。うまくいきません。

発表時の結果は -

viewControllerWithRestorationIdentifierPath

decodeRestorableStateWithCoder呼ばれています。コールも入っていますが、入ってviewdidloadいませんviewwillappear。と私は視覚的に見てViewcontroller1います。しかし、それはすべて問題ありませんpush

プレゼントには何か特別なものが必要です か??

4

1 に答える 1

3

私は非常によく似た問題を抱えており、半日苦労しました。問題は、View Controller を定期的に作成するときに復元識別子を割り当てていましたが、復元されたインスタンスを作成するときにそれを割り当てていなかったことです。

特定のシナリオでは、内部 NC を復元するときに、OS に返される前に @"innerNavSR" 識別子も割り当てられていることを確認してください。

それが役立つことを願っています。

于 2016-11-10T18:21:05.950 に答える