0

私は奇妙な状況に遭遇しました。これはすべてコードで行われ、Interface Builder は不要です。

私は作成しUIViewController、それにいくつかのコンテンツを追加しています:

UIViewController* popoverViewController = [[[UIViewController alloc] init] autorelease];

UIView* popoverContentView = [[[UIView alloc] init] autorelease];
popoverContentView.backgroundColor = [UIColor blackColor];
// Add some stuff to popoverContentView

popoverViewController.view = popoverContentView;

次に、 を作成しUINavigationController、そのルート ビュー コントローラーをUIViewController上記の に設定し、タイトルとボタンを に追加しますnavigationItem

UINavigationController* popoverNav = [[[UINavigationController alloc] initWithRootViewController:popoverViewController] autorelease];
popoverViewController.navigationItem.rightBarButtonItem = [[[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:self action:@selector(dismissPopover)] autorelease];
[popoverViewController.navigationItem setTitle:@"MY TITLE"];

UIPopoverController次に、をその中に設定してUINavigationController提示します。

self.popoverController = [[[UIPopoverController alloc] initWithContentViewController:popoverNav] autorelease];
self.popoverController.delegate = self;

[self.popoverController setPopoverContentSize:CGSizeMake(320, 216) animated:NO];
[self.popoverController presentPopoverFromRect:self.cell.frame inView:self.popoverParentView permittedArrowDirections:UIPopoverArrowDirectionUp | UIPopoverArrowDirectionDown animated:YES];

問題は、1 つの例外を除いてすべてが正しく表示されることです。ナビゲーション バーは表示されませんが、タイトル テキストとバー ボタンは表示され、正しく機能します。hiddenバーとプロパティをいじってtintColorポップオーバーのサイズを変更しようとしましたが、何も変わりません。

明らかな何かが欠けていると確信していますが、見えません。

プロジェクトのコードベースに同様の例が他にもありますが、それらは正しく表示されます。なぜこれが起こっているのか、どうすれば修正できるのかについてのアイデアはありますか?

見えないバー

編集

以下が役立つかどうかはわかりませんが、以前にこのようなものを見たことがある人に、ここで実際に何が起こっているのかについての手がかりを提供できることを願っています.

popoverNav何が起こるかを確認するためだけに、新しい (空の) ビュー コントローラーをプッシュしました。それは完全に押してアニメーション化します。ナビゲーション バーがまだ透明で、バー ボタン項目がビューの上部にプッシュされていることを除いて、すべてが正しく表示されます。

新しいView Controllerをプッシュした後

4

1 に答える 1

0

問題の主な原因ではないかもしれませんが、セットアップUIDatePickerした によって がクリップされているようです。CGSize私が覚えている限りでは、ピッカーのデフォルトの高さは 216 (あなたが持っています) ですが、 に必要な高さを考慮していませんUINavigationBar

これが設定されていない限り、ビューの背景がある種のテクスチャ付きの灰色に見える理由はわかりUIViewControllerませんが、貼り付けたコードからはそのようには見えません。ただし、これは確かに iOS のデフォルトのテクスチャではありません。

おそらくCGSize、ビューのコンテンツに合わせて少し大きくしてみてください。デフォルトでは、「完了」ボタンが右上隅にかなりの数のスペースがあるはずです。

また、新しいビューを作成してビュー コントローラーのビュー プロパティとして割り当てる理由はありますか?

UIView* popoverContentView = [[[UIView alloc] init] autorelease];
popoverContentView.backgroundColor = [UIColor blackColor];
// Add some stuff to popoverContentView

popoverViewController.view = popoverContentView;

代わりに、コンテンツをビューのサブビューとして追加してみませんか?

于 2013-03-28T15:08:43.577 に答える