2010-08-09 13 views
0

Lorsque nous passons en mode portrait en utilisant un UISplitViewController, ils nous fournissent un barButtonItem. Comment puis-je utiliser un customView pour ce barButtonItem?Comment donner une vue personnalisée pour le UIBarButtonItem qui est affiché en mode portrait pour UISplitViewController?

J'ai essayé la méthode suivante. Cela fonctionne si je commence avec l'orientation portrait. Mais si je fais du paysage et quand je reviens, ça plante.

Dans viewDidLoad

UIImage *image = [UIImage imageNamed:@"home.png"]; 
UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom]; 
button.bounds = CGRectMake(0, 0, 22.00, 22.00);  
[button setImage:image forState:UIControlStateNormal]; 
[button addTarget:self action:@selector(showHomeDetails) forControlEvents:UIControlEventTouchDown];  
homeButton = [[UIBarButtonItem alloc] initWithCustomView:button]; 
[button release]; 

Puis, en willHideViewController

barButtonItem = homeButton; 

Qu'est-ce shud-je faire? OU existe-t-il une autre solution?

Répondre

0

je crois qu'il devrait être le suivant:

UIImage *image = [UIImage imageNamed:@"home.png"]; 
UIImageView *imageView = [UIImageView initWithImage:image]; 
homeButton = [[UIBarButtonItem alloc] initWithCustomView:imageView]; 
[homeButton addTarget:self action:@selector(showHomeDetails)]; 
[homeButton setBounds:CGRectMake(0, 0, 22.00, 22.00)]; 

Hope this résout votre problème
jrtc27

+0

Je pense que cela peut aussi fonctionner. Merci quand même pour m'aider. – wolverine

+0

Salut: quel serait le code pour showHomeDetails? – Antonio

+0

Désolé de répondre si tard. Je viens de voir ton commentaire. – wolverine

1

réécrite comme celui-ci à l'intérieur du willHideViewController et de son fait.

UIImage *image = [UIImage imageNamed:@"news.png"]; 
UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom]; 
button.bounds = CGRectMake(0, 0, image.size.width, image.size.height);  
[button setImage:image forState:UIControlStateNormal]; 
[button addTarget:self action:@selector(showSideTable) forControlEvents:UIControlEventTouchUpInside];  
[barButtonItem setCustomView:button]; 

La modification principale est supprimée [libération de bouton].

+0

Je suis un peu confus avec la cible et l'action que vous ajoutez au bouton. Pouvez-vous poster l'implémentation de la méthode showSideTable? – Antonio

+0

- (void) showSideTable { \t [survoler presentPopoverFromBarButtonItem: [toolBar2.items objectAtIndex: 2] allowedArrowDirections: UIPopoverArrowDirectionUp animé: YES]; } – wolverine

0

En supposant une image est la vue personnalisée que vous cherchez:

- (void)splitViewController:(UISplitViewController *)splitController willHideViewController:(UIViewController *)viewController withBarButtonItem:(UIBarButtonItem *)barButtonItem forPopoverController:(UIPopoverController *)popoverController 
{ 
    [barButtonItem setImage:[UIImage imageNamed:@"awesome_menu_icon.png"]]; 
    [[self navigationItem] setLeftBarButtonItem:barButtonItem]; 
}