14

申し訳ありませんが、iPhoneプログラミングは初めてです。

Master-Detail Iphone アプリケーションを作成しました (Navigation Controller はプロジェクトに付属しています)。masterviewcontroller の UIBarButtonItem を介して作成した新しいビュー コントローラーに移動します。ただし、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にタイトルを追加しようとしました(このリンクに記載されていますが、機能しませんでした)

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view.
    self.navigationItem.title = @"Settings";
    self.navigationItem.leftBarButtonItem = self.editButtonItem;
}

しかし、それはまだストーリーボードに表示されます(シーンの下のリストには表示されますが、ビューの表示には表示されません)

だから私の質問は、なぜそれが今表示されているのですか、どうすれば表示されるのですか? master-detail プロジェクトに付属していた詳細ビュー コントローラーのような戻るボタンが必要です。

編集#1

ナビゲーション コントローラーが nil で、nil ではない (if ステートメントが入力されていない) かどうかのチェックを追加しました。

if(self.navigationItem == nil)
{
    [ self.navigationItem init];
}
self.navigationItem.title = @"Settings";
self.navigationItem.leftBarButtonItem = self.navigationItem.backBarButtonItem;

画像を表示するのに十分な評判を得たので、ナビゲーション アイテムがリストに表示されるが、ビューには表示されないことを示すことができます。

ここに画像の説明を入力

4

7 に答える 7

13

セグエの「スタイル」が原因で、ナビゲーション項目が表示されませんでした。

シーンをマスター ビュー コントローラーから設定ビュー コントローラーに移動するセグエが「モーダル」に設定されました。「プッシュ」に設定する必要があります。これは、ユーティリティ ペインのストーリーボードから行います。

于 2012-06-05T23:47:22.163 に答える
6

次のようにして、セグエ スタイルを変更する必要があります。

  • ストーリーボードでセグエを選択します。
  • 属性インスペクター (右ペインのタブ) に移動します。
  • Style 属性を Push に変更します。

画面が右から左にロールし、ナビゲーション バーがスライドして表示されます。Modal では、画面が下から上に移動し、ナビゲーション バーが表示されません。

于 2012-11-23T18:29:15.710 に答える
5

私の場合の問題は、ナビゲーションコントローラーが「初期ビューコントローラー」ではないことでした

だから私はこれをしなければならなかった

ここに画像の説明を入力

于 2014-10-27T18:31:56.680 に答える
1

viewDidLoad メソッドにリストされているナビゲーション コントローラーが nil でないことを確認しましたか?

self.navigationItemnil 以外のa が正しく設定されていると仮定すると、間違ってself.navigationItem.leftBarButtonItemを aneditButtonItemに設定しているように見えます。代わりに、これをすべて削除してみてください!

削除しても問題が解決しない場合は、次を試してください。

self.navigationItem.leftBarButtonItem = self.navigationItem.backBarButtonItem;
于 2012-06-05T03:29:22.543 に答える
0

ビュー コントローラーがナビゲーション コントローラーのルート ビュー コントローラーであるかどうかを確認してください。ビュー コントローラーをモーダル ビュー コントローラーとして直接提示することはできません。ビュー コントローラーをナビゲーション コントローラーのルート ビュー コントローラーとして作成し、ナビゲーション コントローラーをモーダル ビュー コントローラーとして提示する必要があります。

// 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];
于 2014-09-15T18:07:32.757 に答える
0

ナビゲーション アイテムはビュー コントローラー シーンにも表示され、そこで探して編集することもできます

于 2020-07-11T01:26:03.980 に答える