方案1.先取消modal出來的窗口,取得對應的導航控制器,讓后push新的控制器
// 先取消原來的控制器
[self dismissViewControllerAnimated:NO completion:nil];
ViewController *VC1 = [[ViewController alloc] init];
UIWindow *kwindow = [UIApplication sharedApplication].keyWindow;
// 取得窗口的導航控制器
UINavigationController *nav = (UINavigationController *)kwindow.rootViewController;
NSLog(@"%@",nav.childViewControllers);
MyNavigationController *lastNavc = [nav.viewControllers lastObject];
// 導航控制器
[lastNavc pushViewController: VC1 animated:YES];
方案2.modal窗口的基礎上,繼續modal方式出來一個導航控制器
ViewController * vc1 = [[ViewController alloc] init];
UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController: vc1];
[self presentViewController:nav animated:YES completion:nil];
// 壓入導航控制器棧的控制器,可以按照導航控制器的規則依次入棧和出棧。
在vc1頁面push出vc2
ViewController * vc2 = [[ViewController alloc] init];
[self.navigationController pushViewController: vc2 animated:YES];
// 在導航控制器棧的任何一個頁面都可以modal的方式直接返回
[self dismissViewControllerAnimated:YES completion:nil];
方案3.push的基礎上modal
ViewController * vc2 = [[ViewController alloc] init];
[self.navigationController pushViewController: vc2 animated:YES];
ViewController * vc1 = [[ViewController alloc] init];
[self presentViewController:vc1 animated:YES completion:nil];