带有TabBarController和NavigationController的SWRevealViewController - Swift 3

时间:2017-01-13 09:46:07

标签: swift uinavigationcontroller uitabbarcontroller segue swrevealviewcontroller

我希望我的所有应用页面在导航栏上都有一个侧面菜单按钮,打开相同的侧边菜单(通过SWRevealViewController完成)

这是我的故事板结构:

enter image description here

我的初始视图控制器是SWRevealViewController。导航控制器通过sw_front set segue连接到它,sw_rear set segue是侧菜单视图控制器(位于右上方)。

现在的问题是底部的所有视图控制器都需要打开相同的侧面菜单。我已经将侧面菜单视图控制器中的push segue显示给标签栏控制器。

此外,我在左下角的视图控制器类中编写了以下代码。左侧栏按钮项目的插座名为menuButton

if self.revealViewController() != nil {
        menuButton.target = self.revealViewController()
        menuButton.action = #selector(SWRevealViewController.revealToggle(_:))
        self.view.addGestureRecognizer(self.revealViewController().panGestureRecognizer())
    }

我无法理解错误。

注意:可能存在问题,因为主导航控制器的根视图控制器和标签栏是通过代码而不是segue连接的(因为segue在子选项卡的导航栏中出现问题)。

用于此的代码是:

let mainST = UIStoryboard(name: "Main", bundle: Bundle.main)
    let VC = mainST.instantiateViewController(withIdentifier: "idTabBar") as! TabBarController
    VC.index = tappedImageTag
    present(VC, animated: true, completion: nil)

请帮忙。我使用的是xcode 8和swift 3。

编辑:我在sideMenuViewController中尝试了这个(显示在故事板图像的右上角)

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
    let storyboard = UIStoryboard(name: "Main", bundle: Bundle.main)
    let vc = storyboard.instantiateViewController(withIdentifier: "idTabBar") as! TabBarController
    vc.index = 0
    let rvc:SWRevealViewController = self.revealViewController() as SWRevealViewController
    rvc.pushFrontViewController(vc, animated: true)
}

当我从主页的侧边菜单通过此代码转到任何其他页面时,侧面菜单按钮也适用于该页面。 但如果我直接进入这些页面,我的侧边菜单就不会出现了。

我正在做的这是一个非常愚蠢的错误,但请帮我搞清楚。

0 个答案:

没有答案