使用 PushViewController 时选项卡不显示
Posted
技术标签:
【中文标题】使用 PushViewController 时选项卡不显示【英文标题】:Tabs do not show when using PushViewController 【发布时间】:2013-10-23 21:30:24 【问题描述】:我正在尝试使用以下代码来显示标签栏控制器
UITabBarController *tc = [[self storyboard] instantiateViewControllerWithIdentifier:@"tabbarcontroller"];
[self.navigationController pushViewController:tc animated:YES];
它确实加载了视图,我可以告诉它我希望它默认到哪个选项卡。问题是标签不显示。根据我的阅读,我认为这与将选项卡控制器放在导航控制器中有关,但我找不到任何解决方案。
【问题讨论】:
这里有几个假问题,identfyer 正确吗?导航控制器是零吗?你在用故事板吗? 【参考方案1】:如果你使用 Storyboard,使用 pushViewController 方法是一个不好的选择(如果它有效的话)。您必须插入一个“segue”。 进入情节提要并在按住 ctrl 按钮的同时单击主控制器(必须打开 tabViewController)然后释放对 tabBarController 的单击。
现在你有了转场。点击出现的 circle 并为此 segue 选择一个标识符,例如:MainToTab。
现在在您的方法中,您只需调用:
[self performSegueWithIdentifier:@"MainToTab" sender:self];
此外,如果你想管理目标控制器上的属性(通过segue),你可以实现这个方法:
-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
if ([segue.identifier isEqualToString:@"MainToTab"])
UITabViewController *tb = (UITabViewController *)segue.destinationViewController;
//set the properties...
当您启动前一个方法时,会自动调用此方法。
【讨论】:
segue 在执行此操作时可以完美运行,但我有一个 tabbarcontroller 需要能够从多个位置加载。 好的,你必须按下是的。你的代码是正确的。您必须确保标识符正确无误。 tabViewController 显示了吗? 我决定重组它并取消 tabbarcontroller。 啊哈哈,实际上如果你需要多个 tabViewController,也许这不是最好的选择 ;)【参考方案2】:您想要在UITabBarController
中的内容是UIViewControllers
,可能在UINavigationController
中。
您也不应该推送UITabBarController
。可以看苹果的解释here:
使用标签栏控制器的应用也可以使用导航 一个或多个选项卡中的控制器。当结合这两种类型的 同一用户界面中的视图控制器,标签栏控制器 始终充当导航控制器的包装器。
使用标签栏控制器最常见的方法是嵌入其视图 在您的应用程序的主窗口中。 (...)
您仍然可以模态地呈现它:
显示标签栏控制器是可能的(虽然不常见) 模态在您的应用程序中。标签栏界面通常安装在您的 应用程序的主窗口,仅在需要时更新。但是,您可以 如果您的界面设计,则以模态方式显示标签栏控制器 似乎证明了这一点。例如,从应用程序的主要切换 操作模式到使用标签栏的完全不同的模式 界面,您可以模态显示辅助标签栏控制器 使用交叉淡入淡出过渡。
【讨论】:
以上是关于使用 PushViewController 时选项卡不显示的主要内容,如果未能解决你的问题,请参考以下文章
如何同时切换 tab 和 pushViewController?
来自 appDelegate 的 pushViewController - 问题
pushViewController 在多个标签应用程序中啥都不做?
使用 pushViewController 时没有 Xib 的 UIViewController 显示空白