初めてのユニバーサル アプリを作ろうとして、iPad 用の別のストーリーボードをアプリに追加しました。
左側にメニューがあり、右側に詳細コントローラーがある UISplitViewController から始めています。
詳細ビューのナビゲーション バーをカスタマイズしたところ、ポップアップ ボタン (iPad が縦向きの場合にメニューを表示するはずのボタン) が表示されなくなりました。
これは、viewDidLoad でナビゲーション バーをカスタマイズするために使用しているコードです。
UIImage *navBarImg = [UIImage imageNamed:@"someimage"];
[self.navigationController.navigationBar setBackgroundImage:navBarImg forBarMetrics:UIBarMetricsDefault];
UIImage *logo = [UIImage imageNamed:@"logo"];
self.navBar.titleView = [[UIImageView alloc] initWithImage:logo];
次に、分割ビュー「willHideViewController」のデリゲート メソッドで、メニュー ボタンをカスタマイズしようとしています。
UIImage *menuBtn = [UIImage imageNamed:@"menu"];
menuBtn = [menuBtn resizableImageWithCapInsets:UIEdgeInsetsMake(0.0, 4.5, 0.0, 4.5)];
barButtonItem.image = menuBtn;
barButtonItem.title = NSLocalizedString(@"Menu", nil);
[self.navigationItem setLeftBarButtonItem:barButtonItem animated:YES];
self.masterPopoverController = popoverController;
ナビゲーション バーとメニュー ボタンのカスタマイズを削除しようとすると、ボタンが表示されます。コードの何が問題になっていますか?
編集:
Nazir のアドバイスに従い、viewDidLoad メソッドに次のコードを追加しました。
UIImage *menuBtn = [UIImage imageNamed:@"menu"];
menuBtn = [menuBtn resizableImageWithCapInsets:UIEdgeInsetsMake(0.0, 4.5, 0.0, 4.5)];
[self.navigationItem.leftBarButtonItem setBackgroundImage:menuBtn forState:UIControlStateNormal barMetrics:UIBarMetricsDefault];
[self.navigationItem.leftBarButtonItem setTitle:@""];
ボタンにタイトルが必要ないことを忘れていましたが、設定しないとボタンが表示されません。
問題は、ストーリーボードで何かを台無しにしていることです。アプリの起動時に、左側 (MasterViewController) にメニューを表示し、右側 (DetailViewController) にいくつかのデータを含むテーブルビューを表示したいと考えています。
したがって、Split View Controller を Detail View Controller に接続するセグエの関係は、「Detail View Controller」タイプです。
メニューには、他のすべてのオプションに加えて、最初の詳細ビュー コントローラー (一種の「ホーム」オプション) に戻るために使用される最初のオプションがあるため、マスター ビュー コントローラーも詳細ビュー コントローラーに接続しました。 「置換」セグエを使用します。
そのため、縦向きのときにメニューボタンが表示されますが、メニューの「ホーム」オプションをタップすると、ボタンが消えます。
このボタンは、これから作成するすべての詳細ビュー コントローラーで表示されるはずなので、非常に重要です。
私は自分自身を十分に明確にしたことを願っています。