【问题标题】:Hiding Tab Bar Controller On A Subview在子视图上隐藏标签栏控制器
【发布时间】:2011-12-15 15:47:18
【问题描述】:

我发现这个问题有很多变体,但我只是想弄清楚它,因为我似乎无法让我的工作。

我有一个 TabBarController (TBC),其中包含多个 UIViewControllers(每个选项卡)。在其中一个UIViewControllers(mainMenu)上,我正在尝试添加另一个UIViewController(game1)作为子视图:

[self.view addSubview:game1.view];

现在的问题是它需要 TBC,所以我尝试使用以下方法隐藏它:

self.hidesBottomBarWhenPushed = YES; //< (In the game1.m ViewDidLoad method)

game1.hidesBottomBarWhenPushed = YES; //< (In the mainMenu.m after I initialise game1)

我猜这是因为我使用 addSubview 方法时从未推送过菜单?

最初我使用presentModalViewController 方法,但框架被传递到新视图,从而导致 UI 布局被偏移/放大。

谁能帮我解决这个问题,我似乎无法隐藏 TBC 并且我的想法已经不多了。

非常感谢,艾略特

【问题讨论】:

    标签: iphone uiviewcontroller uitabbarcontroller subview presentmodalviewcontroller


    【解决方案1】:

    hidesBottomBarWhenPushed 仅在您将视图控制器推送到UINavigationController 堆栈时才相关。您对addSubview: 所做的只是将game1 的视图添加到当前视图控制器的视图中。这根本不对,UIKit 根本不会处理。

    您应该将UINavigationController 作为标签的视图控制器,然后将game1 视图控制器推入类似以下内容:

    [self.navigationController pushViewController:game1 animated:YES];
    

    而不是addSubview:。这将与hidesBottomBarWhenPushed 一起使用。但是请注意,最好将hidesBottomBarWhenPushed 设置在game1 的任何类的init 方法中,而不是在viewDidLoad 中。

    【讨论】:

    • 所以不是有许多 UIViewControllers 用于选项卡项(mainMenu 等),这些应该是 NavigationControllers?
    • 如果你想推动其他视图控制器,那么是的,这将是通常的处理方式。如果需要,您可以隐藏“主屏幕”上的实际导航栏,然后在推送视图控制器时显示它。这可能是您正在寻找的东西。
    • 抱歉回复慢,周末搬家了!好的,感谢您的帮助,我将更新我的代码并尝试以这种格式构造它,看看我是否可以获得所需的效果。我真正想要的是能够在没有 TabBar 的情况下显示视图,因为在显示游戏屏幕时,我不再希望用户能够导航菜单。当我将非标签栏视图推送到标签栏视图时,由于屏幕尺寸发生变化,问题实际上是笔尖布局偏离中心显示。
    • 听起来你需要坐下来想想你的 UI 层次结构。我不完全确定您要做什么,但听起来模态呈现是您想要的。如果这导致模态 VC 的框架错误,那么您应该查看该视图的 XIB / 视图加载代码,看看有什么问题。特别注意调整大小的蒙版。
    猜你喜欢
    • 2023-03-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-04
    • 2015-02-13
    • 2019-10-02
    • 1970-01-01
    相关资源
    最近更新 更多