如何在 Swift 上使用带有 Storyboard 的 UITabBarController 内的导航控制器

Posted

技术标签:

【中文标题】如何在 Swift 上使用带有 Storyboard 的 UITabBarController 内的导航控制器【英文标题】:How to use Navigation Controller inside of UITabBarController with Storyboard on Swift 【发布时间】:2015-04-05 15:34:33 【问题描述】:

我正在使用 swift。 我想在 TabBar 内使用带有 Storyboard 的导航。 起初,第一个显示显示在选项卡菜单内。 但是当我移动到第二个显示器时,第二个显示器显示没有标签菜单。

我选择了 segue 类型“显示(例如推送)”

如何在所有视图上继续显示标签菜单?

【问题讨论】:

对您当前的故事板设置更好的描述(或屏幕截图)会有所帮助。 如果您使用标签栏控制器,那么只需编辑器->嵌入->导航控制器。它会按您的预期工作。 您可以通过将视图层次结构维护为将您的 First TableViewController 与导航控制器嵌入,然后再次将导航控制器与标签栏控制器嵌入来实现。 .现在只需执行一些操作,只需将第二个 TableView 控制器从第一个推入...... 我不知道如何正确使用堆栈溢出。刚开始看到别人的截图。对于难以理解英语的我来说,这很容易。无论如何,感谢您的帮助。 【参考方案1】:

在界面生成器中:

    创建一个UITabBarController 并将其设置为初始视图控制器。 创建一个UITableViewController。 选择UITableViewController 并转到menu bar > Editor > Embed in > Navigation Controller。 选择您的UITabBarController 并按住CTRL 键将其拖至UINavigationController。 选择Relationship Segue > view controllers。 现在,您将添加到UINavigationController 堆栈中的任何视图控制器都将显示在同一个UITabBarController 中。

要执行从连接到UINavigationController 的堆栈中的第一个UITableViewController 到另一个ViewController,您当然必须首先创建另一个ViewController,在Interface Builder 中为其创建一个segue,为它创建一个标识符您的 segue 并在您的代码中通过在 Swift 中调用适当的函数来执行它,例如:

optional func performSegueWithIdentifier(_ identifier: String,
                                  sender sender: AnyObject?)

以下是您的 Interface Builder 外观示例:

【讨论】:

如何在 Interface Builder 中将两个导航控制器的样式设置为相同?我可以设置一个样式并以某种方式将该样式复制到另一个样式吗? 是否可以做同样的事情,但不是表格视图,而是另一个标签栏控制器?我试图实现这一点,但我的第二个标签栏控制器没有显示任何标签......我看到的只是我的第一个控制器的标签【参考方案2】:

以下是您的故事板外观的粗略概述。您必须使用 Tab Bar Controller 作为 rootViewController。

UITableViewController 嵌入到UINavigationController,以便您始终拥有一个后退按钮。

只要您关注Combined View Controller Interfaces,就有无限可能改进。以下是您想要的带有通用选项卡的演示的外观 -

【讨论】:

以上是关于如何在 Swift 上使用带有 Storyboard 的 UITabBarController 内的导航控制器的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Swift 中的 UITableViewCell 上添加带有单击事件的按钮?

带有 XML 响应和正文的 SOAP 请求 swift 3,Alamofire

iOS开发——实用篇Swift篇&QQ登入界面实现

如何在 Swift 3 中加载带有 HTML 的 CSS 文件?

使用 Xcode 9 和 Swift 4 本地化应用程序的最佳方式是啥?

如何避免在带有 Swift 4 的 iOS 11 中使用带有刷新控件的 @objc?