Ios UINavigationController';导航栏似乎不可见,但标题和按钮仍然可见

Ios UINavigationController';导航栏似乎不可见,但标题和按钮仍然可见,ios,objective-c,ipad,cocoa,Ios,Objective C,Ipad,Cocoa,我遇到了一个奇怪的情况。这一切都是在代码中完成的-没有界面生成器 我正在创建一个UIViewController,并向其中添加一些内容: UIViewController* popoverViewController = [[[UIViewController alloc] init] autorelease]; UIView* popoverContentView = [[[UIView alloc] init] autorelease]; popoverContentView.backgr

我遇到了一个奇怪的情况。这一切都是在代码中完成的-没有界面生成器

我正在创建一个
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
,并将标题和按钮添加到
导航项

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];
问题是,除了一个例外,所有内容都显示正确:导航栏不可见,但标题文本和栏按钮仍然显示并正常工作。我试着弄乱了条的
隐藏
tintColor
属性,并改变了popover的大小,但没有任何改变

我肯定我错过了一些明显的东西,但我看不到

我在项目的代码库中有其他类似的例子,但这些例子看起来是正确的。关于为什么会发生这种情况,或者我如何解决它,有什么想法吗

编辑

不确定下面的内容是否有帮助,但我希望它能为以前见过类似情况的人提供一些线索,让他们知道这里到底发生了什么

我将一个新的(空白)视图控制器推到
popoverNav
上,只是想看看会发生什么。它推动和动画完美。除了导航栏仍然是透明的,并且导航栏按钮项被推到视图的顶部之外,所有内容看起来都是正确的


可能不是问题的主要原因,但看起来
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;

为什么不将内容添加为视图的子视图呢

至于尺寸问题,你是对的。我已经试过了尺寸,不管我是把它变大了,还是尺寸合适了,或者其他什么,都会出现同样的问题。背景是我在
UIViewController
的一个类别中所做的(在其他任何地方都能完美工作)。我不记得为什么我创建了一个新的
UIView
,而不是使用现有的,但是我尝试了你的建议,但没有任何效果。我将再次尝试使用大小和您的
UIView
建议,以进行合理性检查。谢谢。不,没什么区别。我将
popoverContentSize
设置为导航栏的高度+日期选择器的高度。我现在也在使用
popoverViewController.view来代替
popoverContentView
。整个日期选择器现在适合了,但这是唯一的区别。真奇怪。我不知道该建议什么。抓紧救命稻草,但您是否尝试过创建自定义
UIViewController
并将您的
UIPickerView
分配为ivar?我没有。我会试一试,让你知道进展如何。谢谢有趣的是,当我这样做的时候,我得到了同样的结果。你可能在其他地方做过
UIAppearance
自定义
UINavigationBar
(例如,设置背景图像)?而且,用
init
初始化
UIView
似乎有点可疑,而不是将
initWithFrame:
作为
UIView
的指定初始值设定项,但我不确定这是否真的会导致问题(此外,分配空视图是多余的,因为
UIViewController
会自动创建自己的视图)。@omz,不,我没有做过类似的事情。我可以通过使用自定义的
UIViewController
而不使用
UINavigationController
并在Interface Builder中添加
UINavigationBar
来获得想要的外观。我仍然不知道为什么我之前所做的不起作用,所以我将把这个问题留着,以防有人能为未来的寻求答案者解决它。谢谢你的帮助。我刚刚尝试了完全相同的代码,导航栏在这里显示得很好。我怀疑这可能与您提到的
UIViewController
类别有关。。。