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

时间:2017-08-03 10:39:41

标签: ios objective-c swift uitabbarcontroller

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

enter image description here

1 个答案:

答案 0 :(得分:1)

这应该不会太难。您的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
    }
}

这应该就是您所需要的一切