4

私は原因を見つけたと思います: IB のドキュメント情報ウィンドウには警告があります: "'Selected Navigation Controller (Second)' has nib name property set to 'SecondView.nib', but this view controller is not意図されたビューを持つことはできませんこのように設定します。」

残念。


私はInterface Builderでnibを構築しました。これはUITabBarController最上位にあり、sを切り替えますUINavigationController

すべてが単一のファイルにある場合は問題なく動作しますが、s には別のファイルnibを使用したいと思います。nibUINavigationController

Apple の TabBar テンプレートから始めて、 SecondView のクラスを に変更するとUINavigationController、すべてが壊れます。

2番目のニブ

そして、私が得るのはこれだけです:

// imgur has lost the image, sorry //

UINavigationControllerプログラムですべてを設定せずに別のファイルを作成することは可能ですか?

TabBarControllerニブのロードとアンロードを処理したいと思います。

4

5 に答える 5

5

IB 経由で UINavigationController をセットアップしようとはしていません。複数の画面があり、それぞれが個別の xib に格納され、UIViewController を拡張する対応するクラスがあります。applicationDidFinishLaunching では、xib を使用して UIViewControllers を初期化しますが、手動で UINavigationController を作成し、ナビゲーション コントローラーのビューをウィンドウに追加し、最初のビューをナビゲーション コントローラーにプッシュします。

それが役立つかどうかはわかりません。

- (void)applicationDidFinishLaunching:(UIApplication *)application {    

    navigationController = [[UINavigationController alloc] init];

    FirstViewController * viewController = [[FirstViewController alloc] 
                                           initWithNibName:@"FirstView"
                                                    bundle:nil];
    [navigationController pushViewController:viewController animated:NO];
    [viewController release];
    [window addSubview:navigationController.view];
    [window makeKeyAndVisible];
}

FirstViewController の上で UIViewController を拡張します。IB でビューを作成し、ファイルの所有者クラスをクラスに設定し (ここでは FirstViewController など)、ファイルの所有者ビューを UIView のビューに接続します。

于 2009-05-19T15:49:26.897 に答える
5

UINavigationController を FirstViewController と交換するだけです。

したがって、階層は次のようになります。

Tab bar controller
-----Tab bar
-----Navigation Controller
----------First View Controller
---------------Navigation Item
----------Tab bar item (First)
-----Navigation Controller
----------Second View Controller
---------------Navigation Item
----------Tab bar item (Second)

インスペクターの First View Controller の nib を、実際のビュー オブジェクトを含む nib ファイルに設定します (それらを別々のファイルに分割しようとしているため、これは良いことです)。

タブが 1 つあります。そのタブには、First View Controller をルート ビューとしてロードするナビゲーション コントローラーがあります。

終わり。

于 2009-05-19T21:12:14.047 に答える
1

まず、の直下ではなく、ナビゲーションコントローラUITabBarItemUITabBarControllerにが表示されているようです。それはあなたの問題の一部かもしれません。

次に、UITabBarControllerIBにを追加し、トップレベルオブジェクトのリスト(最初のスクリーンショット)でそのアイコンをクリックすると、属性インスペクターを使用して、各タブのビューコントローラーのタイプを変更できます。これを使用して、必要に応じて、それらすべてをナビゲーションコントローラーに変更できます。また、他のペン先からカスタムビューとビューコントローラーをロードしたかったので、属性インスペクターの下部にある[ビューコントローラー]セクションを見ると、プロジェクトからペン先を選択してビューをロードできます。nibの「File'sOwner」がUINavigationControllerサブクラスに設定されていると仮定すると、すべて正常に機能するはずです。

大量のコーディング作業も必要ありません。これらのパネルが見つからない場合に備えて、私が話しているもののスクリーンショットが必要な場合はお知らせください。

于 2009-05-19T16:04:38.377 に答える
0

同じ警告が見つかりました。すべてのView Controllerを別々のxibファイルに保存しました。.nib 名を削除して空のままにすることで、それを取り除きました。

于 2010-12-24T14:51:52.800 に答える