UIPopoverController顶部的按钮

时间:2010-05-13 15:37:05

标签: objective-c ipad

我想在UIPopoverController上添加两个按钮,如下面的屏幕截图所示: HTML Edit

感谢您的帮助!

6 个答案:

答案 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 ;