ナビゲーションコントローラーがあります。最初に VC をプッシュし、次に 12 のモーダル VC を提示しました。ここで、ルート viewController にポップしたいと思います。どうやってやるの?私を助けてください。
6 に答える
提示した12のモーダルビューを閉じる必要があります。popViewControllerまたはpopToRootViewControllerは機能しません。
ルートビューに到達するには、モーダルビューを閉じます。
申し訳ありませんが、あなたの質問を正しく理解できるかどうかわかりません。しかし、UINavigationControllerの
-(NSArray *)popToRootViewControllerAnimated:(BOOL)animated
は、検索対象ですか?
ナビゲーションコントローラーがあり、1つのコマンドで複数のレベルをポップバックする利点を享受したい場合は、(またはモーダルセグエ)pushViewController
ではなく(またはプッシュセグエ)を使用する必要があります。presentViewController
他の人が指摘しているように、後続のコントローラーへのプッシュを修正している場合は、次の方法でポップバックできます。
[self.navigationController popToRootViewControllerAnimated:YES];
プッシュされた VC を に伝えdismissViewControllerAnimated:completion:
ます。これにより、提示されたすべての VC が閉じられます。これで、プッシュされた VC をポップできます。
最初の NavigationController を AppDelegate のインスタンス変数に保持します。AppDelegate.h 内
@property (nonatomic, retain) UINavigationController *navigationControllerFirst;
RootViewController viewDidLoad に以下を追加します。
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
AppDelegate *app = (AppDelegate *)[[UIApplication sharedApplication] delegate];
app.navigationControllerFirst = self.navigationController;
}
次に、目的を達成するために、12 番目に提示されたモーダルで、次の関数を追加して RootViewController に戻ります。
- (IBAction)GoToHome:(id)sender {
AppDelegate *app = (AppDelegate *)[[UIApplication sharedApplication] delegate];
[app.navigationControllerFirst dismissViewControllerAnimated:YES completion:^{
[app.navigationControllerFirst popToRootViewControllerAnimated:YES];
}];
}