在tabbar问题中导航到viewcontroller - ios

时间:2018-01-05 12:24:39

标签: ios objective-c uinavigationcontroller uitabbarcontroller tabbar

我有一个tabviewcontroller以及相关的标签栏和视图控制器,如图所示。 enter image description here

我的问题是,当我尝试使用下面的代码导航到一些内部视图控制器时,它甚至没有工作,我也尝试了一些其他代码,一些代码正在导航但Tabbar丢失。

UIStoryboard *storyBoard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
                UITabBarController *tabbar = (UITabBarController *)[storyBoard instantiateViewControllerWithIdentifier:@"eventList"];
                self.window.rootViewController = tabbar;
                [self.window.rootViewController.navigationController pushViewController:tabbar animated:YES];

我对tabviewcontroller并不熟悉。

2 个答案:

答案 0 :(得分:0)

更改,

UIStoryboard *storyBoard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
UITabBarController *tabbar = (UITabBarController *)[storyBoard instantiateViewControllerWithIdentifier:@"eventList"];
self.window.rootViewController = tabbar;
[self.window.rootViewController.navigationController pushViewController:tabbar animated:YES];

使用,

UIStoryboard *storyBoard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
NavigationControllerOfTabbar *navVC = (NavigationControllerOfTabbar *)[storyBoard instantiateViewControllerWithIdentifier:@"navVCStoryboardID"];
self.window.rootViewController = navVC;

问题,

  • 您需要了解UITabBarController的工作原理:阅读this
  • 您需要了解iOS应用流量/堆栈的工作原理,特别是UINavigationControllerUITabBarController
  • 在您的代码中,此行将为nil:self.window.rootViewController.navigationController

解,

  • 创建新的类子类UINavigationController,并在故事板中提供第一个视图控制器的名称。
  • 现在使用给定的代码初始化它,它将起作用。

答案 1 :(得分:0)

标签栏并不需要导航控制器才能运行。 我的建议是删除上述所有代码,并确保您的故事板在目标主界面。标签栏应自动运行。

我注意到您有其他标签栏控制器作为主标签栏控制器的子项。也许它们是你学习过程的雏形,不得不被删除。

请确保您正在设置适当的segues

https://imgur.com/a/WvIrh