簡體   English   中英

UINavigationController的導航欄似乎不可見,但標題和按鈕仍然可見

[英]UINavigationController's nav bar seems invisible, but title and buttons are still visible

我遇到了一個奇怪的情況。 這些都是用代碼完成的-沒有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"];

然后,我在其中設置了帶有UINavigationControllerUIPopoverController並顯示了它:

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];

問題是,所有內容都可以正確顯示,只有一個例外:導航欄是不可見的,但是標題文本和欄按鈕仍然顯示並可以正常工作。 我嘗試弄亂了酒吧的hiddentintColor屬性,並更改了彈出框的大小,但沒有任何變化。

我確定我缺少明顯的東西,但是看不到。

在我的項目的代碼庫中,我還有其他類似的示例,但這些示例正確顯示。 關於為什么發生這種情況或如何解決的任何想法?

隱形欄

編輯

不確定以下內容是否會有所幫助,但我希望它會為以前見過這種情況的人提供一些有關此處實際發生情況的線索。

我將一個新的(空白)視圖控制器推到popoverNav只是為了看看會發生什么。 它完美地推動和動畫制作。 除了導航欄仍然是透明的,並且將導航欄按鈕項推到視圖頂部之外,其他所有內容看起來都不錯。

推送新的視圖控制器后

可能不是造成問題的主要原因,但看起來UIDatePicker已被您設置的CGSize限制。 據我所記得,選擇器的默認高度是216(您具有),但是您沒有考慮UINavigationBar所需的高度。

我不確定為什么視圖的背景看起來是某種帶紋理的灰色,除非在您的UIViewController設置了它,但是從您粘貼的代碼中不會出現這種情況。 不過,這當然不是iOS的默認紋理。

也許嘗試使您的CGSize稍大一些,以容納視圖的內容,因為“ Done”按鈕似乎卡在了右上角,默認情況下,該點周圍應該有一些值得間距的點。

此外,是否有理由創建新視圖並將其分配為視圖控制器的view屬性?

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

popoverViewController.view = popoverContentView;

為什么不將內容添加為視圖的子視圖呢?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM