2010-10-06 4 views
4

J'ai ajouté quelques boutons sur le côté droit de la barre de navigation avec les éléments suivants:iPad popover presentpopoverfrombarbuttonitem

UIView* customView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 100, 44)]; 
customView.backgroundColor = [UIColor clearColor]; 

UIButton* button = [UIButton buttonWithType:UIButtonTypeCustom]; 
button.frame = CGRectMake(0, 0, 45, 44); 
button.contentHorizontalAlignment = UIControlContentHorizontalAlignmentCenter; 
button.contentVerticalAlignment = UIControlContentVerticalAlignmentCenter; 
button.backgroundColor = [UIColor clearColor]; 
[button setImage:[UIImage imageNamed:@"toc.png"] forState:UIControlStateNormal]; 
button.userInteractionEnabled = YES; 
[button addTarget:self action:@selector(tableOfContentsAction) forControlEvents:UIControlEventTouchUpInside]; 
[customView addSubview:button]; 

button = [UIButton buttonWithType:UIButtonTypeCustom]; 
button.frame = CGRectMake(50, 0, 45, 44); 
button.contentHorizontalAlignment = UIControlContentHorizontalAlignmentCenter; 
button.contentVerticalAlignment = UIControlContentVerticalAlignmentCenter; 
button.backgroundColor = [UIColor clearColor]; 
[button setImage:[UIImage imageNamed:@"bookmark.png"] forState:UIControlStateNormal]; 
button.userInteractionEnabled = YES; 
[button addTarget:self action:@selector(bookmarkButtonAction) forControlEvents:UIControlEventTouchUpInside]; 
[customView addSubview:button]; 

UIBarButtonItem *segmentBarItem = [[UIBarButtonItem alloc] initWithCustomView:customView]; 

self.navigationItem.rightBarButtonItem = segmentBarItem; 
[customView release]; 
[segmentBarItem release]; 

Cela fonctionne bien. Pour les deux boutons que je montre un popover comme indiqué ci-dessous

- (void) bookmarkButtonAction 
{ 
BookmarksViewController* content = [[BookmarksViewController alloc] initWithOrientation:lastOrientation selectedPage:selectedPage]; 
UIPopoverController* aPopover = [[UIPopoverController alloc] initWithContentViewController:content]; 
CGSize size = content.view.frame.size; 
aPopover.popoverContentSize = size; 
aPopover.delegate = self; 
self.bookmarksPopoverVC = content; 
self.bookmarksPopoverVC.popUpController = aPopover; 
[content release]; 
[aPopover presentPopoverFromBarButtonItem:self.navigationItem.rightBarButtonItem permittedArrowDirections:UIPopoverArrowDirectionUp animated:YES]; 
[aPopover release]; 
bookmarksShowing = YES; 
} 

Le problème est que j'utilise presentPopoverFromBarButtonItem: self.navigationItem.rightBarButtonItem ce qui montre la flèche du haut au milieu des deux boutons. Comment puis-je attacher la flèche à chaque bouton?

Répondre

8

au lieu d'utiliser cette ligne:

aPopover presentPopoverFromBarButtonItem:self.navigationItem.rightBarButtonItem 

Vous pouvez mieux essayer cette ligne:

aPopover presentPopoverFromBarButtonItem:sender 

Je pense que cela résoudrait votre problème

+0

Merci beaucoup pour votre réponse. Pour une raison quelconque, je ne comprends pas que vous devez vraiment utiliser l'élément émetteur et ne pouvez pas utiliser celui que vous avez déclaré vous-même. – guruz

5

essayez ceci:

- (IBAction)products:(id)sender { 
    UIButton* btn = (UIButton *)sender; 
    [productsPopover presentPopoverFromRect:[btn bounds] inView:btn permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES]; 
} 

Fonctionne comme un charme

Questions connexes