Сделайте кнопку панели вкладок, чтобы открыть меню справа
Скажем, у меня есть панель вкладок с 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.
Скажем, я хотел бы, чтобы кнопка tabBar "listController"открыла боковое меню. Как я могу это сделать?
О, и я использую "IIViewDeckController" для deckController
Спасибо
2 ответа
Вы можете запретить tabBarController показывать view/viewController, связанный с вкладкой, используяUITableControllerDelegate
и метод - (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;
}
Это должно помочь вам.
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