0

私は次のステップが発生する非常に基本的なiphoneアプリを持っています。

  1. ロードするアプリデリゲート...
  2. ゲームルートビューコントローラー(これは、「ゲームの開始」と「ゲームの続行」の2つのボタンです)
  3. ゲーム開始ボタンをクリックしたら、RootViewControllerをロードします。
  4. タブバーコントローラーを備えたルートビューコントローラー??

ゲームがiPhoneアプリでこれをどのように行うかは本当にわかりませんが、上記が私の最善の推測です。

タブバーコントローラーをRootViewController内にのみ表示したいのですが、何をしても、タブバーコントローラーをこのビュー内に表示することはできません。

ただし、通常のタブバーを表示させることはできます。ただし、これはタブバーコントローラーではありません。これらの各タブの機能(ナビゲーションコントローラー、テーブルコントローラーなど)を制御する必要があります。

ドキュメントによると、タブバーコントローラーを使用する多くの方法の1つは、アプリケーションのメインウィンドウを使用することです。ただし、通常のビューで使用できるかどうかはわかりません。または実際にどのように。

タブバーコントローラーが役に立たないように見えるようにするために、いくつかの試みを試みました。

たとえば、これを行うと、ボタン内のGameRootViewControllerで;

-(IBAction) btnPress {

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

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

    [root release];
}

何も表示されません。

通常の方法を試してみると、次のようになります。

[self.view addSubview:root.view];

ビューは表示されますが、タブバーコントローラーが表示されません。

これは私を非常に混乱させます。

私はおそらくゲーム/アプリがこれを行うことができると考えています:

  1. アプリデリゲート
  2. ...などによって作成されたすべてのスプラッシュ画面、クレジットをロードします
  3. 開始ゲームをロードし、ゲーム画面を続行し、これらが作成するアクションを処理します
  4. アプリデリゲートウィンドウにタブバーコントローラーをself.windowに追加させます。

しかし、私にはわかりません。タブバーコントローラーをビューコントローラー内に配置できるのか、それともアプリデリゲート内でのみ使用できるのかを明確/理解したいのですが。

4

1 に答える 1

3

まず、コントローラーとビューを混同しないでください。ビューは UI の目に見える部分であり、コントローラーは舞台裏の目に見えないオブジェクトです。コントローラーをビュー内に配置したり、コントローラーを他のコントローラーの「内部」に配置したりしないでください。代わりに、コントローラーはさまざまな階層に存在し、それらの階層の構造によって、どのビューがいつどこに表示されるかが決まります。

非標準的な方法でタブバーを使用していますが (ユーザーを混乱させる可能性があります)、タブバー コントローラーをナビゲーション コントローラー内に配置して、次のような階層を取得する必要があります。

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

したがって、最初に表示されるビューは、navigationController の rootController によって制御されるボタン ビューです。ボタンを選択すると、TabViewController が nav スタックにプッシュされ、デフォルトのタブが選択された状態でタブバーが表示されます。(ナビゲーション スタックがユーザーに見えないようにするには、ナビゲーション バーを非表示にする必要があることに注意してください。)

于 2011-03-09T18:19:22.880 に答える