我遇到了一个奇怪的情况。这一切都在代码中完成 - 没有 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];
问题是一切都正确显示,但有一个例外:导航栏不可见,但标题文本和栏按钮仍然显示并正常工作。我试过弄乱栏hidden
和tintColor
属性并改变弹出框的大小,但没有任何改变。
我确定我遗漏了一些明显的东西,但我看不到它。
我的项目代码库中还有其他类似事物的示例,但这些示例显示正确。关于为什么会发生这种情况或如何解决它的任何想法?
编辑
不确定以下内容是否会有所帮助,但我希望它能为以前见过类似情况的人提供一些线索,了解这里到底发生了什么。
我推了一个新的(空白)视图控制器,popoverNav
只是为了看看会发生什么。它完美地推动和动画化。除了导航栏仍然是透明的并且栏按钮项被推到视图的顶部之外,一切看起来都是正确的。