簡體   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