在现有的UINavigationController中插入UIViewController

时间:2017-04-03 17:22:54

标签: ios swift uitableview uiviewcontroller uinavigationcontroller

我正在开发一个应用程序(在Swift with UI builder中),我在UINavigationController中嵌入了一个UITableViewController,因此我可以提供有关行的详细信息,使用标准的“+”按钮向表中添加行等。那一点,UINavigationController是故事板的入口点。

现在我想在故事板中的UITableViewController之前添加一个登录屏幕作为UIViewController,因此用户需要先登录,并在成功验证后进入表格视图。我期待新的视图控制器应嵌入现有的导航控制器中(为了连续性,对我来说很有意义)。但是,我无法弄清楚如何在不破坏现有导航的情况下在导航控制器中插入登录屏幕。我尝试了几种方法,例如从登录屏幕到表视图创建一个新的segue,然后用导航控制器和表视图之间的关系“root view controller”替换一个带有登录屏幕的新关系,但当我这样做时,所有的导航元素都在表格视图和后续屏幕(细节,数据创建)消失。

这样做有诀窍,还是我必须重新创建整个导航逻辑?

谢谢!

2 个答案:

答案 0 :(得分:1)

听起来你走在正确的轨道上......不确定你哪里出错了。

这将是(一)有效的方法,而 应该为你提供你想要的东西。

编辑:另请注意,如果您通过代码导航,则需要将ViewControllers推送到导航堆栈,而不是“呈现”它们。 E.G。:self.navigationController?.pushViewController(tableViewController, animated: true)

从NavController开始... TableView是Nav的Root,而DetailView显示在Table Row Select:

enter image description here

删除“Root VC”连接,并在其间删除一个新的ViewController - 现在应该看起来像这样:

enter image description here

TableView和DetailView在顶部缺少NavBar - 没关系。

现在,将LoginView连接为Nav的Root,并将Login segue从Login Button连接到TablView:

enter image description here

如果一切按计划进行,NavBar将根据需要再次显示在TableView和DetailView的顶部。

答案 1 :(得分:0)

我遇到了同样的问题 您应该首先添加一个新视图,然后使用控件和触控板连接导航控制器和新视图。然后选择Root View Controller选项,这将创建一个新的根视图,然后您可以正常选择下一个屏幕。相应地查看图片并按照步骤操作。

选择根视图控制器选项:

希望这会有所帮助。