我有一个非常基本的iphone应用程序,其中包含以下步骤。
我真的不确定游戏如何在iPhone应用程序中执行此操作,但以上是我最好的猜测。
我希望标签栏控制器只显示在RootViewController中,但无论我做什么,我都无法使标签栏控制器显示在此视图中。
然而,我可以显示正常的标签栏。但这不是标签栏控制器,我需要控制每个标签的功能(导航控制器,表格控制器等)。
根据docs使用标签栏控制器的众多方法之一是通过应用程序的主窗口。但它没有说明你是否可以在普通视图中使用它;或者确实如何。
我尝试了多次尝试使标签栏控制器看起来无济于事。
例如,如果我这样做,在按钮内的GameRootViewController中;
-(IBAction) btnPress {
RootViewController *root = [[RootViewController alloc] initWithNibName:@"RootViewController" bundle:nil];
[self.view addSubview:root.tabBarController.view];
[root release];
}
什么都没有出现。
如果我尝试正常的做法:
[self.view addSubview:root.view];
视图出现但我从未看到标签栏控制器。
这让我非常困惑。
我想可能游戏/应用程序可以这样做:
但我不确定。我想澄清/理解我是否可以将标签栏控制器放在视图控制器中,或者它们是否只能在应用程序委托中使用?
答案 0 :(得分:3)
首先,不要将控制器与视图混淆。视图是UI的可见部分,控制器是幕后的不可见对象。您不要将控制器放在视图或控制器内“其他控制器内”。相反,控制器存在于各种层次结构中,并且这些层次结构的结构决定了哪些视图何时何地出现。
您正在以非标准方式使用标签栏(这可能会使用户感到困惑),但您需要将标签栏控制器放在导航控制器中,以便获得如下所示的层次结构:
navigationController (rootViewController)
-->TabBarController(secondController)
-->tabViewController1
-->tabViewController2
-->tabViewController3
因此,第一个可见视图是按钮视图,它由navigationController的rootController控制。选择按钮后,它会将TabViewController推送到导航堆栈,导航栏将进入视图,并选择默认选项卡。 (注意,您必须隐藏导航栏以使导航堆栈对用户不可见。)