0

假设我有一个带有 5 个 ViewControllers 的标签栏,以及一个左右菜单。

我的甲板 ViewController 将标签栏作为中心 ViewController:

  self.tabBarController.viewControllers = @[UINAVIGATIONCONTROLLER(feedController),
                                              UINAVIGATIONCONTROLLER(myProfileController),
                                              UINAVIGATIONCONTROLLER(topTradersController),
                                              UINAVIGATIONCONTROLLER(stocksListController),
                                            //  UINAVIGATIONCONTROLLER(watchlistController),
                                            ];





    self.deckController =  [[STViewDeckController alloc] initWithCenterViewController:self.tabBarController
                                                                   leftViewController:settingsController
                                                                  rightViewController:watchlistController];

我想打开选项卡栏按钮打开右侧菜单,而不是让 tabBar 猛烈地推动 ViewController。

假设我想要“watchlistController”tabBar 按钮打开侧面菜单,我该怎么做?

哦,我正在使用“IIViewDeckController”作为deckController

谢谢

4

2 回答 2

2

UITableControllerDelegate您可以使用和 方法阻止 tabBarController 显示与选项卡关联的视图/视图控制器- (BOOL)tabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewController

将以下内容添加到您的代码中:

self.tabBarController.delegate = self;

然后实现这个:

#pragma mark - UITabBarControllerDelegate

- (BOOL)tabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewController {
    BOOL isLeft = YES;
    if (isLeft) {
        [self.deckController openLeftView];
    }
    else {
        [self.deckController openRightView];
    }

    return NO;
}

这应该为您解决问题。

于 2014-06-10T20:18:00.120 回答
0

Swift 5 - 从标签栏项目单击打开 SideMenu

这个答案是@mbogh 的答案的快速版本,并且归功于他制作了这个技巧。请按照这些步骤打开标签栏项目点击上的侧边菜单。

//make your controller subclass of UITabBarControllerDelegate
extension HomeVC: UITabBarControllerDelegate {
    func tabBarController(_ tabBarController: UITabBarController, shouldSelect viewController: UIViewController) -> Bool {
        self.openSideMenu()
        return false
    }
}

//triger tabbbar delegate from  your controller's ViewDidLoad()
self.tabBarController?.delegate = self
于 2021-09-01T13:59:30.637 回答