在子视图上隐藏标签栏控制器

时间:2011-12-15 15:47:19

标签: iphone uiviewcontroller uitabbarcontroller subview presentmodalviewcontroller

我已经找到了很多关于这个问题的变化,但只是想要一些清晰度,因为我似乎无法让我的工作。

我有一个TabBarController(TBC),它包含几个UIViewController s(每个标签)。在其中一个UIViewController s(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并且我的想法已经用完了。

先谢谢Elliott

1 个答案:

答案 0 :(得分:0)

仅当您将视图控制器推送到hidesBottomBarWhenPushed堆栈时,

UINavigationController才有意义。您对addSubview:所做的是,您只是将game1的视图添加到当前视图控制器的视图中。这根本不对,UIKit根本不会处理它。

您应该将UINavigationController作为选项卡的视图控制器,然后使用以下内容推送game1视图控制器:

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

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