ビューがXIBから来るモーダルビューコントローラーがあります。ナビゲーションベースのアプリの残りの部分と同じルックアンドフィールを持たせたいのですが、ナビゲーションスタックにプッシュされるビューではなく、モーダルで表示されます。 UINavigationBarをドラッグしてアウトレットにしましたが、設定するtitleプロパティがありません。このモーダルビューを表示できる2つのフィールドがあり、どちらがモーダルビューを作成するかに応じて、タイトルの設定を変えたいと思います。
UINavigationBar
は、UINavigationItem
マネージャーがUINavigationController
sのスタックを管理するように、UIViewController
sのスタックを管理します。直接表示されるものを設定するには、pushNavigationItem:animated:
またはsetItems:animated:
バーに反映させるView ControllerのnavigationItemを使用します。
例えば:
self.navigationItem.title = @"A custom title";
[self.navigationBar pushNavigationItem:self.navigationItem animated:NO];
スタンドアロンのナビゲーションバーを参照するプロパティnavigationBar
がある上記のコード。
自分で管理したくない場合は、mplappertの提案どおりに実行し、View Controllerを(スタンドアロンUINavigationBar
なしで)UINavigationController
にネストし、代わりにモードでNavigation Controllerを提示できます。 View Controllerの.
また、IBで既にUINavigationBarを定義している場合、この簡単な方法が見つかりました。 self.navigationBarがIBOutletであると仮定します。
self.navigationBar.topItem.title = title;
(XCode 4.5.2を使用)Interface Builderで直接動作するメソッドを見つけました-コードを設定しなくても。
(IB)でViewControllerオブジェクトを選択すると、Identity Inspectorの下に「ser Defined Runtime Attributes」というラベルのセクションがあります。 String型のkeyPath "title"を追加し、必要な値に設定しました。
テスト済みで、これはNav Controllerスタックにプッシュされ、モーダルモードで開かれたときに機能します(もちろんModal Nav Controllerで)。
ナビゲーションアイテムのiboutletを作成するviewcontroller.hファイル
@property (weak, nonatomic) IBOutlet UINavigationItem *navigationBarTitle;
-「navigationBarTitle」という名前
viewcontroller.mファイルで、スーパーviewDidLoadにコードを追加します
self.navigationBarTitle.title = @"Favorites";
ナビゲーションバー項目のストーリーボードをnavigationBarTitleに接続します。
最も簡単な方法は次のとおりです。
[[[self.navigationController navigationBar] topItem] setTitle:@"The Title"];
次のコードで既存のナビゲーションバーを使用できます
self.navigationController?.navigationBar.topItem?.title = "Calender"
私の.hファイル
ナビゲーション項目の子をストーリーボードから.hファイルにドラッグしました
「navigationBarTitle」という名前を付けました
私の.mファイル