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

然后我在其中设置了一个UIPopoverControllerUINavigationController呈现它:

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只是为了看看会发生什么。它完美地推动和动画化。除了导航栏仍然是透明的并且栏按钮项被推到视图的顶部之外,一切看起来都是正确的。

推送新的视图控制器后

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 回答