UIToolbar项目未显示在弹出窗口中

时间:2012-04-03 18:16:12

标签: ios uinavigationcontroller uipopovercontroller uitoolbar

我想在我的iPad App中的popover视图中显示自定义tableview。这工作正常。我想在工具栏上添加按钮(在tableview的底部)。工具栏显示为空。有什么建议吗?

请注意,当用户触摸主视图控制器中的按钮时会触发以下代码。

UINavigationController *navigationController = [[UINavigationController alloc] initWithRootViewController:self.customTableViewController];
UIBarButtonItem *item1 = [[UIBarButtonItem alloc] initWithTitle:@"item 1" style:UIBarButtonItemStylePlain target:nil action:nil];
UIBarButtonItem *item2 = [[UIBarButtonItem alloc] initWithTitle:@"item 2" style:UIBarButtonItemStylePlain target:nil action:nil];

[navigationController setToolbarHidden:NO];
navigationController.navigationBar.topItem.title = @"Some Title";

NSArray *array = [[NSArray alloc] initWithObjects:item1, item2, nil];
[navigationController setToolbarItems:array];

UIPopoverController *popover = [[UIPopoverController alloc] initWithContentViewController:navigationController];
self.popoverController = popover;
popoverController.delegate = self;

[popoverController presentPopoverFromRect:[sender bounds] inView:sender permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];

2 个答案:

答案 0 :(得分:3)

我遇到了类似的问题,桌面视图在弹出框中显示正常,但下面的按钮不可见。如果我想出办法,我会告诉你的。

编辑:我的问题是我正在重新调整popover的大小,按钮被推出了视图。我通过更改自动调整来锁定相对于框架底部的位置来修复此问题。要执行此操作,请在界面构建器中查看xib,转到右上角的“标尺”选项卡,然后使用“自动调整大小”GUI。对我来说,这意味着只在GUI上选择了底部锚点。

答案 1 :(得分:2)

在ipad应用程序中,您必须将工具栏项设置为“topViewController”(是的,这是违反直觉的)。

UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController:catView];
UIBarButtonItem *item1 = [[UIBarButtonItem alloc] initWithTitle:@"item 1" style:UIBarButtonItemStylePlain target:nil action:nil];
UIBarButtonItem *item2 = [[UIBarButtonItem alloc] initWithTitle:@"item 2" style:UIBarButtonItemStylePlain target:nil action:nil];
[nav setToolbarHidden:NO animated:YES];
// WRONG: [nav setToolbarItems:[NSArray arrayWithObjects:addButton, nil]];
// CORRECT (for ipad apps):
[nav.topViewController setToolbarItems:[NSArray arrayWithObjects:item1, item2, nil] animated:NO];
UIPopoverController *popover = [[UIPopoverController alloc] initWithContentViewController:nav];

请参阅: http://www.kevatron.co.uk/tag/uipopovercontroller/