4

我在应用程序中使用 .xib 文件。我想要两个视图控制器正常的方式,并从第三个视图控制器,将它嵌入到导航视图控制器中。这是我想要的说明。

在此处输入图像描述

我知道我可以像这样将导航控制器嵌入模态呈现的视图控制器中。

let firstVC = FirstViewController(nibName: firstViewController, bundle: nil)
let navController = UINavigationController(rootViewController: firstVC)
presentViewController(navController, animated: true, completion: nil)

但是,如果我将它嵌入导航控制器并推送它,应用程序会崩溃,并出现错误Pushing the same view controller instance more than once is not supported

let firstVC = FirstViewController(nibName: firstViewController, bundle: nil)
let navController = UINavigationController(rootViewController: firstVC)
navController.pushViewController(firstVC, animated: true)

有可能做到这一点吗?如果是这样,有人可以解释一下吗?

谢谢你。

注意:不要将代码片段与上图混淆。firstViewController代码中的不是中的第一个视图控制器。

4

2 回答 2

1

假设FirstViewcontroller、Secondviewcontroller、Thirdviewcontroller是三个视图控制器。然后从第二个视图控制器到第三个视图控制器的转换使用下面给出的代码。

Secondviewcontroller *second=[[Secondviewcontroller alloc]init];
UINavigationController *nav=[[UINavigationController alloc]initWithRootViewController: second];
[self presentViewController:nav animated:NO completion:nil];
于 2014-09-09T12:27:03.167 回答
1
  1. 使用第一个视图控制器作为 UINavigationController 的根视图控制器
  2. 使用下面的方法来展示你的下一个视图控制器

[self.navigationController pushViewController:vc 动画:YES];

  1. 在 viewWillAppear 方法中,如果要隐藏导航栏,请使用

[self.navigationController setNavigationBarHidden:YES 动画:动画];

如果要显示导航栏,请使用

[self.navigationController setNavigationBarHidden:没有动画:动画];

于 2014-09-09T13:41:35.740 回答