顶部的UIPopoverController工具栏

时间:2011-07-06 16:34:51

标签: objective-c ipad uipopovercontroller uitoolbar

我试图将UIToolbar放在UIPopoverController的顶部,就像Apple在页面和主题演讲中使用“media”,“tables”,“charts”“shapes”工具栏一样。

enter image description here

我设法使用this post中描述的相同方法在底部放置一个,但我无法将其移到顶部。

我可以通过在其中一个子视图控制器中放置一个普通的UIToolbar来实现,但是工具栏似乎与边框不在同一条线上,并且看起来不像苹果应用程序那样漂亮。 / p>

有没有人对如何做到这一点有任何建议,或者甚至可能?任何帮助将不胜感激。

谢谢!

2 个答案:

答案 0 :(得分:10)

使用UINavigationController只保存一个ViewController作为popoverController的内容,如下所示:

MyViewController *myVC = [[myViewController alloc] init];

UINavigationController *navCon = [[UINavigationController alloc] initWithRootViewController:myVC];

myPopoverController = [[UIPopoverController alloc] initWithContentViewController:navCon];

[myVC release];
[navCon release];

[myPopoverController presentPopoverFromRect:rect
                                     inView:view
                   permittedArrowDirections:UIPopoverArrowDirectionRight
                                   animated:YES];

然后,在viewController的init中,设置navigationController的项目:

self.navigationItem.title = @"myTitle";
self.navigationItem.rightBarButtonItem = [[[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemEdit target:self action:@selector(editButtonTapped:)] autorelease];

你可以疯狂地把你想要的东西放在那里:

self.navigationItem.titleView = [[MySpecialTitleView alloc] initWithFrame...];

如果其堆栈中只有一个ViewController,导航控制器将无法导航。

iOS 7警告:弹出窗口中的NavigationBars似乎忽略了iOS 7中的色调。我认为这是一个错误并鼓励您在遇到此问题时向Apple提交错误报告。

答案 1 :(得分:1)

您可以将工具栏放在UIPopoverController的顶部。

更确切地说,你必须把它放在UIViewController的顶部,当调用initWithContentViewController时,它将被设置为你的UIPopoverController的内容。

如果您正在使用IB:
1)将UI工具栏拖到UIViewController的顶部 2)选择UIToolbar,转到尺寸检查器和自动调整部分:
  - 单击顶部指示器以固定上边距
  - 单击底部指示器以使底部边距灵活

在小预览窗口中,红色条应保持在顶部