如何在 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
如何在 Swift 3 中加载带有 HTML 的 CSS 文件?