【问题标题】:iOS-Objective-C: On Pushing View Controller, Tabbar not displaying (Its getting hide)iOS-Objective-C:在推送视图控制器时,标签栏不显示(它越来越隐藏)
【发布时间】:2017-11-15 07:18:05
【问题描述】:

我的故事板如下:

我的应用程序代表:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
    UITabBarController *tabBarController = [storyboard instantiateViewControllerWithIdentifier:@"rootTabBarVC"];
    self.window.rootViewController = tabBarController;
    return YES;
}

我有侧边菜单,我正在按如下方式推送 VC1:

UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
VC1 *contr = [storyboard instantiateViewControllerWithIdentifier:@"VC1"];
[self.navCon pushViewController:contr animated:YES];

我的问题是:VC1 正在推送,但标签栏被隐藏了。那么,任何人都可以帮我在推送VC时显示标签栏吗?

【问题讨论】:

  • 尝试将tabBar为根的初始导航控制器作为窗口的rootviewController
  • 选择VC1索引的Push Tabbarcontroller
  • 您正在将导航控制器的根视图控制器设置为 TabBarController...any 视图然后推送到导航控制器堆栈将“推出”您的 TabBarController。当然,这不是你想要的,不是吗?

标签: ios objective-c navigationbar tabbar


【解决方案1】:

可能您的视图控制器的hidesBottomBarWhenPushed 设置为true。您也可以像在屏幕截图中一样在情节提要中检查这一点。

【讨论】:

  • 您必须在当前标签栏的导航控制器上推送您的视图控制器。这意味着,每个标签栏视图控制器都必须嵌入到导航控制器中。但我想这也不是一个好方法。所以总结一下:如果你在标签栏的导航控制器上推送你的视图控制器,你将无法保持标签栏可见。
  • 我已经为 VC 嵌入了导航,但是那个也不适合我。
  • 你还在像[self.navCon pushViewController:contr animated:YES]; 一样推吗?你更新的代码是什么
  • 但您实际上必须推动其中一个标签栏项目导航控制器。类似于:[self.tabbarcontorller.viewcontrollers.first.navigationController push]
【解决方案2】:

试试这个,在你的 AppDelegate.h 文件集中:

@property (strong, nonatomic) UIWindow *window;
@property (strong, nonatomic) UITabBarController *tabBarCon;

然后在你的 AppDelegate.m 文件中:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
    UIViewController *viewController =  [storyboard instantiateViewControllerWithIdentifier:@"InitialNavCon"];
    self.window.rootViewController = viewController; 
}

最后,当您从侧边菜单导航时,您可以将标签栏控制器委托 UITabBarControllerDelegate 放在界面中,然后将 appdelegate 声明为:

@property (strong, nonatomic) AppDelegate *appDelegate; 
// for NAVIGATION use this :
  self.appDelegate.tabBarCon = [self.storyboard instantiateViewControllerWithIdentifier:@"MainTabBarController"]; // Set your TABBAR CONTROLLER TO "MainTabBarController"
  [[UITabBar appearance] setItemWidth:self.appDelegate.window.frame.size.width/4.0];
  self.appDelegate.tabBarCon.delegate=self;
  [self.navigationController pushViewController:self.appDelegate.tabBarCon animated:YES]; // then navigate

使用这样的基本要素设置您的初始导航控制器:

您与 Tab 栏的连接应该是这样的,每个 tabVC 都有一个导航控制器:

【讨论】:

    猜你喜欢
    • 2014-06-11
    • 2011-11-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多