【问题标题】:Make a tab bar button open the right side menu制作一个标签栏按钮打开右侧菜单
【发布时间】:2014-07-28 15:51:33
【问题描述】:

假设我有一个带有 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];

我想让标签栏按钮打开右侧菜单,而不是让标签栏直接推动 ViewController。

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

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

谢谢

【问题讨论】:

    标签: ios objective-c uitabbarcontroller iiviewdeckcontroller


    【解决方案1】:

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

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

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

    这应该对你有用。

    【讨论】:

    • 帮了我谢谢,在 swift 版本下面发帖。
    【解决方案2】:

    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
    

    【讨论】:

      猜你喜欢
      • 2019-05-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-08-26
      • 1970-01-01
      • 2019-10-07
      • 2021-03-08
      相关资源
      最近更新 更多