我想在UIPopoverController上添加两个按钮,如下面的屏幕截图所示: HTML Edit
感谢您的帮助!
答案 0 :(得分:21)
将视图控制器添加到UINavigationController,然后将导航控制器添加到UIPopoverController。然后在你的UIViewController的viewDidLoad方法中,将此代码放在:
中UIBarButtonItem *okButton = [[UIBarButtonItem alloc] initWithTitle:@"Ok" style:UIBarButtonItemStyleBordered target:self action:@selector(okayButtonPressed)];
UIBarButtonItem *cancelButton = [[UIBarButtonItem alloc] initWithTitle:@"Cancel" style:UIBarButtonItemStyleBordered target:self action:@selector(cancelButtonPressed)];
self.navigationItem.title = @"My Title";
[self.navigationItem setLeftBarButtonItem:cancelButton animated:NO];
[self.navigationItem setRightBarButtonItem:okButton animated:NO];
[cancelButton release];
[okButton release];
答案 1 :(得分:14)
您需要直接使用UINavigationController初始化popover。然后将根视图设置为自定义视图控制器。
UINavigationController *navigationController = [[UINavigationController alloc] initWithRootViewController:yourViewController];
UIPopoverController *popover = [[UIPopoverController alloc] initWithContentViewController:navigationController];
答案 2 :(得分:5)
使用UINavigationController作为弹出窗口。然后,访问导航控制器的.navigationBar
property,获取.topItem
,并设置其.leftBarButtonItem
和.rightBarButtonItem
。
答案 3 :(得分:3)
我不会像之前的海报建议那样使用导航控制器,苹果建议不要在ipad上使用导航控制器(有充分的理由)它不像你期望的那样在弹出时将VC推入堆栈时使用,现在你真的不想使用它的“导航”方面,但我不会使用导航控制器只是因为你蚂蚁吧....改为使用UIToolBar,并将其按钮设置为你想要的任何东西......这里不需要使用导航控制器......
答案 4 :(得分:3)
当我这样做时,我的navBar似乎不适合UIPopoverController,如下所示:
http://www.flickr.com/photos/coleorton/4752223066/
这就是我正在做的事情:
// alloc the Direct Reports view controller.
ToolsViewController *toolsViewController = [[[ToolsViewController alloc] init] autorelease];
UINavigationController *toolsNavController = [[[UINavigationController alloc] initWithRootViewController:toolsViewController] autorelease];
toolsNavController.title = @"Tools";
toolsNavController.view.frame = CGRectMake(0.0, -10.0, 320.0, POPOVER_HEIGHT);
if(![self.toolsPopoverController isPopoverVisible]){
// show popover
self.toolsPopoverController = [[[UIPopoverController alloc] initWithContentViewController:toolsNavController] autorelease];
self.toolsPopoverController.delegate = self;
self.toolsPopoverController.popoverContentSize = CGSizeMake(320.0, POPOVER_HEIGHT);
[self.toolsPopoverController presentPopoverFromBarButtonItem:sender
permittedArrowDirections:UIPopoverArrowDirectionAny
animated:YES];
} else {
// close popover
[self.toolsPopoverController dismissPopoverAnimated:YES];
}
答案 5 :(得分:0)
这很有用!
//Determine how to present this view based on device
if ([UIDevice currentDevice ].userInterfaceIdiom == UIUserInterfaceIdiomPad) {
BNRAssetTypeViewController *contentViewController = [[BNRAssetTypeViewController alloc] init];
UINavigationController *popOverNavigation = [[UINavigationController alloc] initWithRootViewController:contentViewController];
self.assetPickerPopover = [[UIPopoverController alloc] initWithContentViewController:popOverNavigation];
[self.assetPickerPopover presentPopoverFromBarButtonItem:sender permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];
}
然后在contentViewController的init函数中添加此
//add a barbutton item which will help in adding new type
UIBarButtonItem *bbi = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAdd target:self action:@selector(addNew:)];
//set bar item to right side of navbarite
self.navigationItem.rightBarButtonItem =bbi ;