Apple ドキュメントから、initWithNavigationBarClass:toolbarClass: メソッドを使用して、UiNavigationController を別の Uinavigationbar でインスタンス化できることを理解しています。カスタム UiNavigationBar サブクラスと IB を介してこれを正しく行うにはどうすればよいですか?
3 に答える
このように使用して、ナビゲーションコントローラーを初期化できます。
UINavigationController *navigationController = [[UINavigationController alloc] initWithNavigationBarClass:[CustomNavigationBar class] toolbarClass:nil];
CustomNavigationBar
サブクラス化によって作成されたカスタム クラスを次に示しUINavigationBar
ます。UINavigationController のプロパティを使用して、viewcontrollers を設定できますsetViewControllers
。
IBでこれを行いたい場合は、これを試してください。オブジェクトからナビゲーション バーを選択し、ID インスペクターでナビゲーション バーのカスタム クラスを選択します。
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
。
あなたの一般的なサブクラスのためにここでベンジャミン・メイヨーの答えをマッシュアップするだけです
- (UINavigationController *)initWithRootViewController:(UIViewController *)rootViewController navigationBarClass:(Class)navigationBarClass {
self = [super initWithNavigationBarClass:navigationBarClass toolbarClass:UIToolbar.class];
if (self) {
self.viewControllers = @[rootViewController];
}
return self;
}