繁体   English   中英

如何在从SlideMenuViewController实例化的ViewControllers中打开TabBarController

[英]How to open a TabBarController in ViewControllers that Instantiate from SlideMenuViewController

我希望在所有ViewControllers中都有tabBar。 我已经实现了SWRevealViewController,它有两个视图控制器,一个是TabBarController,另一个是TableViewController,我希望在我的所有ViewControllers中都有相同的tabBar,来自TableViewController的Segues。

在此输入图像描述

我希望在所有ViewControllers中都有tabBar。 我已经实现了SWRevealViewController,它有两个视图控制器,一个是TabBarController,另一个是TableViewController,我希望在我的所有ViewControllers中都有相同的tabBar,来自TableViewController的Segues。

你可以做一些好办法这样,创建custom delegate并设置delegateTableViewControllerTabBarControllerSWRevealViewController 现在第一次让我们说你打开TableViewController ,当点击任何单元格然后只调用应该在SWRevealViewController类中执行的delegate方法,然后在该类中执行segue ,这应该打开TabBarController ,当再次单击TabBarController back button时调用delegate应在SWRevealViewController类内执行并执行segue以打开TableViewController

这不应该太困难。 您的RevealViewController (故事板的初始控制器)似乎已经是SWRevealViewController的子类。 这很好,但这种情况并不是必需的。 你需要的是你的侧边菜单的UIViewController实现。 故事板本身不会。

此外,我不会在这里使用segues在标签之间切换,因为segue有一个目标视图控制器。 因此,每次执行segue时,都会创建目标视图控制器的新实例。 我宁愿实现一个UIViewController来处理UITableView的单元格选择

现在假设你创建一个UIViewControllerUITableViewController作为你的菜单(实际上是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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM