![](/img/trans.png)
[英]How to set tabbarcontroller viewControllers conditionally?
[英]How to open a TabBarController in ViewControllers that Instantiate from SlideMenuViewController
我希望在所有ViewControllers中都有tabBar。 我已經實現了SWRevealViewController,它有兩個視圖控制器,一個是TabBarController,另一個是TableViewController,我希望在我的所有ViewControllers中都有相同的tabBar,來自TableViewController的Segues。
你可以做一些好辦法這樣,創建custom delegate
並設置delegate
的TableViewController
和TabBarController
到SWRevealViewController
。 現在第一次讓我們說你打開TableViewController
,當點擊任何單元格然后只調用應該在SWRevealViewController
類中執行的delegate
方法,然后在該類中執行segue
,這應該打開TabBarController
,當再次單擊TabBarController
back button
時調用delegate
應在SWRevealViewController
類內執行並執行segue
以打開TableViewController
這不應該太困難。 您的RevealViewController
(故事板的初始控制器)似乎已經是SWRevealViewController
的子類。 這很好,但這種情況並不是必需的。 你需要的是你的側邊菜單的UIViewController
實現。 故事板本身不會。
此外,我不會在這里使用segues在標簽之間切換,因為segue有一個目標視圖控制器。 因此,每次執行segue時,都會創建目標視圖控制器的新實例。 我寧願實現一個UIViewController
來處理UITableView
的單元格選擇
現在假設你創建一個UIViewController
或UITableViewController
作為你的菜單(實際上是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.