私はiPhoneプログラミングに不慣れであることをお詫び申し上げます。
マスターディテールのiPhoneアプリケーションを作成しました(ナビゲーションコントローラーがプロジェクトに付属しています)。 masterviewcontrollerのUIBarButtonItemを介して作成した新しいViewControllerにセグエします。ただし、(プロジェクトに付属の)detailviewcontrollerとは異なり、ストーリーボードのシーンリストに表示されていても、ナビゲーションアイテム(またはナビゲーションバー?)をビューに表示できないようです。
ここにいくつかのコードとスクリーンショットがあります:
私のmasterviewcontroller.mでviewdidload()関数
UIBarButtonItem *settingsButton = [[UIBarButtonItem alloc] initWithTitle:@"Settings" style:normal target:self action:@selector(goToSettings:)];
self.navigationItem.leftBarButtonItem = settingsButton;
私のmasterviewcontroller.mで
- (IBAction)goToSettings:(id)sender{
[self performSegueWithIdentifier:@"SettingsSegue" sender:self];
}
作成した新しいviewcontroller.mクラスのviewDidLoad関数の間にnavigationitemにタイトルを追加しようとしました(これに記載されています Link が、機能しませんでした)
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view.
self.navigationItem.title = @"Settings";
self.navigationItem.leftBarButtonItem = self.editButtonItem;
}
しかし、それでもストーリーボードには表示されます(シーンの下のリストには表示されますが、ビューの表示には表示されません)
だから私の質問は、なぜ今それが表示されているのですか、そしてどうすればそれを取得できますか?マスター/詳細プロジェクトに付属している詳細ビューコントローラーのような戻るボタンが必要です。
編集#1
ナビゲーションコントローラーがnilであり、nilではないかどうかのチェックを追加しました(ifステートメントは入力されません)。また、ナビゲーションアイテムを元に戻して削除しようとしましたが、何も機能しませんでした。
if(self.navigationItem == nil)
{
[ self.navigationItem init];
}
self.navigationItem.title = @"Settings";
self.navigationItem.leftBarButtonItem = self.navigationItem.backBarButtonItem;
画像を表示するのに十分な評判を得たので、ナビゲーションアイテムはリストに表示されますが、ビューには表示されないことを示すことができます
セグエの「スタイル」が原因で、ナビゲーションアイテムが表示されませんでした。
シーンをマスタービューコントローラーから設定ビューコントローラーに移動するセグエは、「モーダル」に設定されました。 「プッシュ」に設定する必要があります。これは、ユーティリティペインのストーリーボードから実行されます
これを行うことにより、セグエスタイルを変更する必要があります。
画面が右から左に回転し、ナビゲーションバーがスライドして表示されます。 Modalを使用すると、画面は画面の下から上に移動し、ナビゲーションバーは表示されません。
私の場合の問題は、ナビゲーションコントローラーが「最初のビューコントローラー」ではなかったことです。
だから私はこれをしなければなりませんでした
ViewDidLoadメソッドにリストされているナビゲーションコントローラーがnilではないことを確認しましたか?
Nil以外のself.navigationItem
が正しくあるとすると、self.navigationItem.leftBarButtonItem
をeditButtonItem
に誤って設定しているようです。代わりに、これをすべて一緒に削除してみてください。
それを削除しても問題が解決しない場合は、次を試してください。
self.navigationItem.leftBarButtonItem = self.navigationItem.backBarButtonItem;
ビューコントローラがナビゲーションコントローラのルートビューコントローラであるかどうかを確認してください。ビューコントローラをモーダルビューコントローラとして直接提示することはできません。ビューコントローラをナビゲーションコントローラのルートビューコントローラとして作成してから、ナビゲーションコントローラをモーダルビューコントローラとして提示する必要があります。
// Create the root view controller for the navigation controller
// The new view controller configures a Cancel and Done button for the
// navigation bar.
YourViewController *addController = [[YourViewController alloc]
init];
// Configure the YourViewController.
// Create the navigation controller and present it.
UINavigationController *navigationController = [[UINavigationController alloc]
initWithRootViewController:addController];
[self presentViewController:navigationController animated:YES completion: nil];