0

初めてのユニバーサル アプリを作ろうとして、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」タイプです。

メニューには、他のすべてのオプションに加えて、最初の詳細ビュー コントローラー (一種の「ホーム」オプション) に戻るために使用される最初のオプションがあるため、マスター ビュー コントローラーも詳細ビュー コントローラーに接続しました。 「置換」セグエを使用します。

そのため、縦向きのときにメニューボタンが表示されますが、メニューの「ホーム」オプションをタップすると、ボタンが消えます。

このボタンは、これから作成するすべての詳細ビュー コントローラーで表示されるはずなので、非常に重要です。

私は自分自身を十分に明確にしたことを願っています。

4

2 に答える 2

0

titleView と leftBarButton アイテムを持つことはできません (ドキュメントを正しく読んだ場合)

ドキュメントに従って:

Titleview: "このプロパティをカスタム タイトルに設定すると、タイトルの代わりに表示されます。leftBarButtonItem が nil でない場合、このプロパティは無視されます。"

だから私は逆も真であると仮定します

于 2013-05-29T14:15:13.320 に答える
0

あなたがやりたいことがわかったら、topBatButton に背景を追加して、次のようにします。

UIImage *menuBtn = [UIImage imageNamed:@"someimage"];

画像をバーアイテムに設定:

[self.navigationItem.leftBarButtonItem setBackgroundImage:menuBtn forState:UIControlStateNormal barMetrics:UIBarMetricsDefault];

タイトルをバー項目に設定:

[self.navigationItem.leftBarButtonItem setTitle:@"sometitle"];

于 2013-05-29T14:12:26.043 に答える