在iPad应用程序中,我希望能够在弹出框的顶部栏中放置多个按钮。我这样推出它:
UINavigationController *nc = [[UINavigationController alloc] initWithRootViewController:vc];
pop = [[UIPopoverController alloc] initWithContentViewController:nc];
[pop presentPopoverFromRect:CGRectInset([tableView rectForRowAtIndexPath:indexPath], 10, 10)
inView:tableView
permittedArrowDirections:UIPopoverArrowDirectionAny
animated:YES];
pop.delegate = self;
[nc release];
在viewDidLoad
我想将titleView设置为包含多个UIBarButtonItems
。这是正常的UINavigationController
,但我需要能够执行此操作并在弹出窗口上保留导航栏的自定义样式。
我尝试将rightBarButtonItem
设置为包含按钮的工具栏,但它们采用工具栏的格式,工具栏本身不会采用弹出框的格式/样式。
答案 0 :(得分:1)
有点hackish,但你可以通过子类化和覆盖drawRect:创建一个真正透明的UIToolbar:使用空方法。这仍然会在工具栏上绘制UIBarButtonItems,但不会绘制工具栏本身。
然后,如Nils所述,您可以从自定义工具栏实例中创建一个条形按钮项,并将其添加为rightBarButtonItem。
答案 1 :(得分:0)
为什么不使用UIView
或UIToolbar
代替UINavigationBar
的自定义UIPopoverController
?
效果,是相同的!
答案 2 :(得分:0)
首先,您需要设置UINavigationController的委托,然后实现nabigationController:willShowViewController:animated:方法。在此方法中,您可以调整左右栏按钮项目。
- (void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated{
viewController.navigationItem.leftBarButtonItem = [[[UIBarButtonItem alloc]
initWithTitle:@"Image Source"
style:UIBarButtonItemStylePlain
target:self
action:@selector(cancelPressed)] autorelease];
}
答案 3 :(得分:0)
我遇到了同样的问题,这就是我所做的:
UIBarButtonItem *uiBarRefresh = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemRefresh target:self action:@selector(forcerefresh)];
UIBarButtonItem *uiBarCurl = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemPageCurl target:self action:@selector(showlist)];
UIToolbar_transparent* tools = [[UIToolbar_transparent alloc] initWithFrame:CGRectMake(0, 0, 133, 44.01)];
tools.barStyle = UIBarStyleBlackTranslucent;
tools.translucent = YES;
tools.backgroundColor = [UIColor clearColor];
tools.tintColor = self.navigationController.navigationBar.tintColor;
[tools setItems:[NSArray arrayWithObjects:flexItem,uiBarRefresh,uiBarCurl,nil] animated:NO];
self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:tools];
通过这种方式,您可以避免暗淡的灰色背景,令人讨厌的白色下划线,并且您可以使用固定或弹性间距完全自定义您想要的位置。
祝你的项目好运:]