2017-08-03 59 views
7

我想在所有ViewControllers中都有tabBar。我已經實現了SWRevealViewController,它有兩個視圖控制器,一個是TabBarController,另一個是TableViewController,我希望在TableViewController的所有ViewController中都有相同的TabBar。如何打開從SlideMenuViewController實例化的ViewControllers中的TabBarController

enter image description here

+0

您需要使用UITabBar實現BaseClass viewController,然後從BaseClass繼承所有其他控制器。編程方式沒有這個類的筆尖或故事板 –

+0

我想用它作爲TableViewController中的委託,並在MainTabBarController中回調,然後我顯示傳遞給MainTabBarComtroller的ViewController。 – AsimRazaKhan

+0

因此它可以正常工作。你想要tabbar控制器還是隻使用側面菜單控制器? –

回答

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 
    } 
} 

這應該是所有你需要

2

我想擁有的TabBar在我所有的ViewControllers。我已經實現了 SWRevealViewController,它有兩個視圖控制器鏈接一個 是TabBarController和另一個是TableViewController我想 在我的所有ViewControllers中從 TableViewController segular相同tabBar。

你可以做一些這樣的調整,創建custom delegate和設置的TableViewControllerdelegateTabBarControllerSWRevealViewController。現在,第一次讓我們說你打開TableViewController,當任何電池接頭,然後只需調用delegate方法,它應該執行內部SWRevealViewController類,然後執行segue該類應該打開TabBarController,當點擊TabBarControllerback button內再次調用delegate方法它應該在SWRevealViewController類中執行並執行segue來打開TableViewController