Кнопки в верхней части UIPopoverController - PullRequest
8 голосов
/ 13 мая 2010

Я хочу добавить две кнопки поверх UIPopoverController, как показано на следующих снимках экрана: HTML Edit

Спасибо за помощь!

Ответы [ 6 ]

21 голосов
/ 17 августа 2010

Добавьте контроллер представления в UINavigationController, затем добавьте контроллер навигации в UIPopoverController. Затем в методе viewDidLoad вашего UIViewController поместите этот код в:

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];
14 голосов
/ 14 мая 2010

Вам нужно инициализировать ваш поповер напрямую с помощью UINavigationController. Затем установите корневой вид на свой собственный контроллер представления.

UINavigationController *navigationController = [[UINavigationController alloc] initWithRootViewController:yourViewController];     
UIPopoverController *popover = [[UIPopoverController alloc] initWithContentViewController:navigationController];
5 голосов
/ 13 мая 2010

Используйте UINavigationController в качестве всплывающего окна. Затем получите доступ к свойству .navigationBar контроллера навигации, получите .topItem и установите его .leftBarButtonItem и .rightBarButtonItem.

3 голосов
/ 01 июля 2010

Когда я делаю это, мой 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];
}
3 голосов
/ 14 мая 2010

Я бы не использовал навигационный контроллер, как предлагали предыдущие авторы, Apple рекомендует не использовать навигационные контроллеры на ipad (по уважительной причине), он не ведет себя так, как вы ожидаете, когда вы толкаете VC в стек при использовании в поповерах, теперь вы действительно не хотите использовать аспект "навигации", но я бы не стал использовать навигационный контроллер только потому, что вы работаете с панелью .... Вместо этого используйте UIToolBar и установите для его кнопок все, что вы хотите ... нет необходимости использовать контроллер навигации здесь ...

0 голосов
/ 20 ноября 2015

Это сработало!

//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 добавьте это

//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 ;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...