2009-10-02 3 views
7

im nouveau à la programmation iphone, donc si vous pouviez m'aider je l'apprécierais - j'ai été partout sur le web et ne peux pas trouver la réponse à cette question.iPhone: ajouter un contrôle segmenté à la barre d'outils au lieu de boutons dans le contrôleur de navigation?

ma configuration actuelle est comme ce contrôleur de navigation

dans MainWindow.xib> Voir dans le contrôleur de navigation dans les appels MainWindow.xib RootViewController.xib> RootViewController.xib contient un seul tableview.

je peux alors charger dans une barre d'outils en utilisant le code suivant dans RootViewController.m

UIBarButtonItem *buttonOne = [[UIBarButtonItem alloc] initWithTitle:@"One" 
    style:UIBarButtonItemStyleBordered target:self action:@selector(buttonOnePushed)]; 
UIBarButtonItem *buttonTwo = [[UIBarButtonItem alloc] initWithTitle:@"Two" 
    style:UIBarButtonItemStyleBordered target:self action:@selector(buttonTwoPushed)]; 

NSArray *barArray = [NSArray arrayWithObjects: buttonOne, buttonTwo, nil]; 
[buttonOne release]; 
[buttonTwo release]; 

[self setToolbarItems:barArray animated:YES]; 

[self.navigationController setToolbarHidden:NO animated:YES]; 

ce code fonctionne pour les boutons. mais je ne peux pas pour la vie de moi savoir comment ajouter un contrôle segmenté au lieu des boutons. J'ai essayé un tableau avec deux contrôles segmentés, mais je ne peux pas ajouter le tableau à la barre d'outils. Si quelqu'un peut me faire connaître un code qui ajoutera des contrôles segmentés de la même manière que j'ai utilisé pour ajouter les boutons, je l'apprécierais grandement.

merci, dave.

Répondre

20

La solution est à (1) créer le UISegmentedControl avec tous ses boutons, etc., et ensuite (2) créer un UIBarButtonItem utilisant le initWithCustomView:(UIView *)view initialiseur et assure le contrôle segmenté en tant que variable à cela. Ajoutez ensuite l'élément du bouton Barre à la barre d'outils à l'aide d'un tableau, comme vous l'avez fait dans votre exemple de code.

Assurez-vous de définir une cible et une action pour votre contrôleur segmenté, et je recommande de définir son style sur UISegmentedControlStyleBar. Cela ressemblera à celui qui se trouve au bas de l'application Maps. J'espère que c'était ce que vous cherchez.

+0

comment puis-je obtenir quel segment est sélectionné dans le sélecteur segmentedController? – Neelesh

+0

vérifier sa propriété SelectedSegmentIndex –

11

Voici mon code qui ajoute un contrôle segmenté à la barre d'outils d'un contrôleur de navigation. :

NSArray *segItemsArray = [NSArray arrayWithObjects: @"Settings", @"Templates", @"Notes", nil]; 
UISegmentedControl *segmentedControl = [[UISegmentedControl alloc] initWithItems:segItemsArray]; 
segmentedControl.frame = CGRectMake(0, 0, 200, 30); 
segmentedControl.segmentedControlStyle = UISegmentedControlStyleBar; 
segmentedControl.selectedSegmentIndex = 2; 
UIBarButtonItem *segmentedControlButtonItem = [[UIBarButtonItem alloc] initWithCustomView:(UIView *)segmentedControl]; 
UIBarButtonItem *flexibleSpace = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil]; 
NSArray *barArray = [NSArray arrayWithObjects: flexibleSpace, segmentedControlButtonItem, flexibleSpace, nil]; 

[self setToolbarItems:barArray]; 
+0

merci pour ce monsieur, a travaillé comme un charme –

Questions connexes