iphone - 如何将选项卡栏 Controller 放在 View Controller 而不是委托(delegate)中?

标签 iphone ios uitabbarcontroller uiapplicationdelegate

我有一个非常基本的 iPhone 应用程序,其中执行了以下步骤。

  1. 加载的 App Delegate...
  2. 游戏 Root View Controller (这只是 2 个按钮,“开始游戏”和“继续游戏”)
  3. 单击开始游戏按钮时加载 RootViewController。
  4. 带有标签栏 Controller 的 Root View Controller ??

我真的不确定游戏在 iPhone 应用程序中是如何做到这一点的,但以上是我最好的猜测。

我希望标签栏 Controller 只出现在 RootViewController 中,但无论我做什么我都不能让标签栏 Controller 出现在这个 View 中。

但是我可以让正常的标签栏出现。但这不是标签栏 Controller ,我需要控制每个标签的功能(导航 Controller 、表格 Controller 等)。

根据docs使用选项卡栏 Controller 的多种方法之一是通过应用程序的主窗口。但是它并没有说你是否可以在普通 View 中使用它;或者确实如何。

我尝试了几次尝试使标签栏 Controller 看起来无济于事。

例如,如果我这样做,在我的 GameRootViewController 按钮内;

-(IBAction) btnPress {

    RootViewController *root = [[RootViewController alloc] initWithNibName:@"RootViewController" bundle:nil];

    [self.view addSubview:root.tabBarController.view];

    [root release];
}

什么都没有出现。

如果我尝试正常的做法:

[self.view addSubview:root.view];

出现了 View ,但我从未看到标签栏 Controller 。

这让我很困惑。

我认为游戏/应用程序可能会这样做:

  1. 应用代理
  2. 加载所有启动画面、致谢名单、...等等
  3. 加载开始游戏,继续游戏屏幕并处理这些创建的 Action
  4. 使应用委托(delegate)窗口将标签栏 Controller 添加到 self.window。

但我不确定。我想澄清/了解我是否可以将选项卡栏 Controller 放在 View Controller 内,或者它们只能在应用程序委托(delegate)内使用吗?

最佳答案

首先,不要将 Controller 与 View 混淆。 View 是 UI 的可见部分, Controller 是幕后不可见的对象。您不会将 Controller 放在 View 内部,也不会将 Controller 放在其他 Controller “内部”。相反, Controller 存在于各种层次结构中,这些层次结构的结构决定了哪些 View 在何时何地出现。

您正在以非标准方式使用标签栏(这可能会使用户感到困惑),但您需要将标签栏 Controller 放在导航 Controller 内,以便获得如下所示的层次结构:

navigationController (rootViewController)
    -->TabBarController(secondController)
        -->tabViewController1
        -->tabViewController2
        -->tabViewController3

因此,您的第一个可见 View 是由 navigationController 的 rootController 控制的按钮 View 。选择一个按钮后,它会将 TabViewController 推到导航堆栈上,这会在选中默认选项卡的情况下将选项卡栏带入 View 。 (请注意,您必须隐藏导航栏以使导航堆栈对用户不可见。)

关于iphone - 如何将选项卡栏 Controller 放在 View Controller 而不是委托(delegate)中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5250181/

相关文章:

iphone - 刷新CoreData表?

ios - iPhone 应用程序崩溃 : UIKit

iphone - [UILabel setImage :]: unrecognized selector sent to instance

ios - 如何为 TableView 中的单元格提供唯一引用

ios - UITabBarController 没有正确初始化选项卡 View Controller

iphone - 我如何使用 CoreGraphics 绘制半圆

ios - UISwitch 详细文字在下方

ios - 如何更改一个 View Controller 的选项卡栏的颜色?

swift - 标签栏 Controller 干扰导航栏

php - 上传图片到服务器不起作用