我已设置标签栏视图控制器并与导航控制器链接,
请参阅此图片。
我面临的问题是这个图像是"更多"标签栏页面
当我点击十字按钮时,它会将家庭视图控制器推送到另一个视图。但当我点击另一个选项卡并返回更多选项卡时,视图控制器仍然停留在主视图控制器而不是更多选项卡原点控制器。我需要点击更多标签2次然后它只会返回更多选项卡视图控制器。选择项目时,下面的代码是我的标签栏控制器。
- (void)tabBar:(UITabBar *)tabBar didSelectItem:(UITabBarItem *)item {
NSLog(@"didSelectItem: %ld", (long)item.tag);
if (item.tag == 0) {
//try to dismiss home view controller in this way, but it won't work
[self.navigationController popToRootViewControllerAnimated:YES];
NSString *str = @"TAB 1";
NSLog(@"%@", str);
}
}
答案 0 :(得分:1)
试试这个:
在UITabViewController的appdelegte或子类上使用协议
<UITabBarControllerDelegate>
分配代表
tabBarController.delegate = self
- (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController
{
if ([viewController isKindOfClass:[UINavigationController class]])
{
[(UINavigationController *)viewController popToRootViewControllerAnimated:NO];
}
}
答案 1 :(得分:0)
更新了Swift 4.1 iOS 11.2的答案
class TabBarMenuView: UITabBarController {
override func tabBar(_ tabBar: UITabBar, didSelect item: UITabBarItem) {
if (self.selectedViewController?.isKind(of: UINavigationController.self))!
{
let nav = self.selectedViewController as! UINavigationController
nav.popToRootViewController(animated: false)
}
}
}
答案 2 :(得分:0)
只需将此方法添加到UITabBarControllerDelegate
覆盖函数tabBar(_ tabBar:UITabBar,didSelect项:UITabBarItem){在此方法中输入以下代码}
if item.tag < self.viewControllers!.count {
if let nav = self.viewControllers![item.tag] as? UINavigationController {
nav.popToRootViewController(animated: true)
}
}