13

Apple ドキュメントから、initWithNavigationBarClass:toolbarClass: メソッドを使用して、UiNavigationController を別の Uinavigationbar でインスタンス化できることを理解しています。カスタム UiNavigationBar サブクラスと IB を介してこれを正しく行うにはどうすればよいですか?

4

3 に答える 3

21

このように使用して、ナビゲーションコントローラーを初期化できます。

UINavigationController *navigationController = [[UINavigationController alloc] initWithNavigationBarClass:[CustomNavigationBar class] toolbarClass:nil];

CustomNavigationBarサブクラス化によって作成されたカスタム クラスを次に示しUINavigationBarます。UINavigationController のプロパティを使用して、viewcontrollers を設定できますsetViewControllers

IBでこれを行いたい場合は、これを試してください。オブジェクトからナビゲーション バーを選択し、ID インスペクターでナビゲーション バーのカスタム クラスを選択します。

ここに画像の説明を入力 ここに画像の説明を入力

于 2013-01-31T03:27:27.837 に答える
6

Interface Builder では、ナビゲーション コントローラー内のナビゲーション バーをクリックします。右側のパネルでそれを調べて、カスタム クラスをUINavigationBarカスタム サブクラスに変更します。

コードでは、ナビゲーション バー サブクラスのヘッダー ファイルをインポートしたことを確認し、次のような内容を記述します。

// This code assumes `MyCustomNavigationBar` is the name of your custom subclass, and that `viewController` is a UIViewController object created earlier.

// To create the containing navigation controller
UINavigationController *navigationController = [[UINavigationController alloc] initWithNavigationBarClass:[MyCustomNavigationBar class] toolbarClass:[UIToolbar class]];

// To set the root view controller in the navigation controller
navigationController.viewControllers = @[viewController];

上記のコードは、 UIKit にUINavigationController、サブクラス のナビゲーション バーを持つを作成するように通知しますMyCustomNavigationBar。次に、ルート ビュー コントローラーを変数に格納されているオブジェクトに設定しますviewController

于 2013-01-31T03:32:47.113 に答える
2

あなたの一般的なサブクラスのためにここでベンジャミン・メイヨーの答えをマッシュアップするだけです

- (UINavigationController *)initWithRootViewController:(UIViewController *)rootViewController  navigationBarClass:(Class)navigationBarClass {
    self = [super initWithNavigationBarClass:navigationBarClass toolbarClass:UIToolbar.class];
    if (self) {
        self.viewControllers = @[rootViewController];
    }
    return self;
}
于 2013-03-29T20:29:26.607 に答える