2

私はオンラインで見回しましたが、この問題に対する許容できる解決策を見つけることができませんでした...

私は単純なコードパターンを探しています:

デフォルトの MainWindow.xib を含めて自動的にロードするのではなく、別の .xib ファイルから TabBarController オブジェクト (関連するサブビュー コントローラーを含む) をロードします。

XCode の用語では、「タブ バー アプリケーション」として新しい iPad/iPhone プロジェクトから始めて、次のことを解決することを目標としています。

  • プロジェクトを作成する
  • 移動: TabBarController、TabBar、FirstViewController、および SelectedSecondViewController を MainWindow.xib から新しい「TabBarController.xib」ファイルに移動します。
  • 移動後、MainWindow.xib には、ファイルの所有者、ファーストレスポンダー、アプリ デリゲート、ウィンドウのみが含まれている必要があります。
  • TabBarController.xib では、File's Owner と First Responder がそれぞれ UIApplication と UIResponder に設定されています。
  • メイン アプリケーション デリゲートの「didFinishLaunchingWithOptions」を次のように変更します。

削除する:

     [self.window addSubview:tabBarController.view];

追加:

     UITabBarController *uiTab = [[UITabBarController alloc] initWithNibName:@"TabBarController" bundle:nil];
     [self.window addSubview:uiTab.view];

これらの変更により、アプリケーションはビルドおよび実行されますが、TabBarController が読み込まれると、タブ バーは「空」になり、コントローラーにコンテンツがないように見えます。

デバッガーを見ると、「init」がデータから正しく初期化されていないか、.xib ファイル内の何かが正しく設定されていません。

これに対する正しい解決策は何ですか?これを行うには他の方法があることに気づきました。はい、他のアプリケーションでそれらを動作させています。

ただし、私が探しているのは、iOS コードをセットアップするための一般的なパターンとして使用できるデフォルト プロジェクトを使用した特定のソリューションです。

助けてくれてありがとう

  • js
4

2 に答える 2

2

私は同じものが欲しいので、私はあなたが探しているものを知っていると思います.

  1. インターフェイス ビルダーで新しい空の xib ファイルを作成します。
  2. ライブラリからxib に追加しTabBarControllerます。
  3. xib のこのタブ バー コントローラーで必要なものを編集します。
  4. もちろん保存...

タブバーコントローラーを使用してそのxibを作成するビューコントローラーを決定します。つまり、このタブ バー コントローラーを表示させるビュー コントローラーは誰なのかということです。そのView Controllerを呼び出しましょうParentViewController

そのView Controllerで、 to を作成しIBOutletますTabBarController

xib に戻り、ファイルの所有者の ID を に設定しますParentViewController。もちろん、ファイルの所有者のタブ バー コントローラーのアウトレットを xib のタブ バー コントローラーに接続することを忘れないでください。xib を保存すれば準備完了です。

そのタブバーを表示したい場合は、モーダル、ポップアップ、またはその他の方法を決定するだけです(Appleはタブバーコントローラーをナビゲーションコントローラー内に配置することを許可していないため、ナビゲーションコントローラー内ではありません)。

決定したら、タブ バー コントローラー アウトレットを他のビュー コントローラーを表示する方法で表示するだけです。例えば:

[self presentModalViewController:self.myTabBarController animated:YES];
于 2011-01-18T08:24:22.103 に答える
1

「タブバーアプリケーション」テンプレートから始めて、説明したように UITabBarController と関連するビューコントローラーを新しいペン先に移動すると仮定します...

新しい nib では、File's Owner を AppDelegate クラスに設定する必要があります。次に、File's Owner のアウトレット「tabBarController」を UITabBarController に接続します。

次に、-[application:didFinishLaunchingWithOptions:] で、次の行を削除しないでください。

[self.window addSubview:tabBarController.view];

代わりに、アプリのデリゲートを所有者として、その直前に新しい nib をロードします。

[[NSBundle mainBundle] loadNibNamed:@"TabBarController" owner:self options:nil];

これにより、tabBarController プロパティが設定され (ペン先で接続したため)、通常どおり続行できます。あなたがしていたことは、実際にはまったく新しい UITabBarController を作成し、ペン先からまったくロードしていませんでした。(ええと、あなたはそれを少しの間ロードしていましたが、その後は何も役に立ちませんでした)

それが役立つことを願っています。

于 2010-11-05T04:25:21.157 に答える