![](/img/trans.png)
[英]How to set tabbarcontroller viewControllers conditionally?
[英]How to open a TabBarController in ViewControllers that Instantiate from SlideMenuViewController
我希望在所有ViewControllers中都有tabBar。 我已经实现了SWRevealViewController,它有两个视图控制器,一个是TabBarController,另一个是TableViewController,我希望在我的所有ViewControllers中都有相同的tabBar,来自TableViewController的Segues。
你可以做一些好办法这样,创建custom delegate
并设置delegate
的TableViewController
和TabBarController
到SWRevealViewController
。 现在第一次让我们说你打开TableViewController
,当点击任何单元格然后只调用应该在SWRevealViewController
类中执行的delegate
方法,然后在该类中执行segue
,这应该打开TabBarController
,当再次单击TabBarController
back button
时调用delegate
应在SWRevealViewController
类内执行并执行segue
以打开TableViewController
这不应该太困难。 您的RevealViewController
(故事板的初始控制器)似乎已经是SWRevealViewController
的子类。 这很好,但这种情况并不是必需的。 你需要的是你的侧边菜单的UIViewController
实现。 故事板本身不会。
此外,我不会在这里使用segues在标签之间切换,因为segue有一个目标视图控制器。 因此,每次执行segue时,都会创建目标视图控制器的新实例。 我宁愿实现一个UIViewController
来处理UITableView
的单元格选择
现在假设你创建一个UIViewController
或UITableViewController
作为你的菜单(实际上是RearViewController
)。 确保将此类分配给故事板中的UITableViewController
。
class MenuViewController: UITableViewController {
// MARK: UITableViewDelegate
override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
let tabIndex = indexPath.row
let tabbarVC = (revealViewController().frontViewController as! UITabBarController)
tabbarVC.selectedIndex = tabIndex // this assumes the menu items are in the same order as the tabs. if not you need to adjust this
revealViewController().revealToggle(animated: true) // close the side menu after switching tabs
}
}
这应该是你所需要的
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.