Problème lors de l'ajout d'UIBarButtonItems à une barre d'outils
J'ai un UINavigationController avec un UITableViewController. Je veux afficher une Barre d'outils sur le fond, UIBarButtonItem. La Barre d'outils s'affiche, mais les boutons ne s'affichent pas. Quelqu'un sait pourquoi?
- (void)viewDidLoad {
[super viewDidLoad];
[[self navigationItem] setTitle:@"Selections List"];
[[self navigationItem] setRightBarButtonItem:[[[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAdd target:self action:@selector(addProjectSearch:)] autorelease]];
[[self navigationItem] setLeftBarButtonItem:[self editButtonItem]];
[[super tableView] setDataSource: self];
[[super tableView] setDelegate: self];
//Toolbar
UIBarButtonItem * logoutButton = [[[UIBarButtonItem alloc] initWithTitle:@"Log out" style:UIBarButtonItemStylePlain target:self action:@selector(logOut:)]autorelease];
NSMutableArray * arr = [NSMutableArray arrayWithObjects:logoutButton, nil];
[[self navigationController] setToolbarHidden: NO animated:YES];
[[self navigationController] setToolbarItems:arr animated:YES];
}
source d'informationauteur Olivier de Jonge
Vous devez vous connecter pour publier un commentaire.
Remplacer cette ligne:
[[self navigationController] setToolbarItems:arr animated:YES];
:
[self setToolbarItems:arr animated:YES];
En général, vous devez définir
toolbarItems
sur chaque vue-contrôleur que vous poussez, et pas sur votre UINavigationController.J'ai trouvé dans le la documentation d'Apple il y a un petit paragraphe expliquant les UIToolBar. Dans ce paragraphe il y a une très petite phrase indiquant: "[..] Lors de l'affichage, cette barre d'outils obtient son ensemble actuel des éléments de la toolbarItems propriété de la vue active controller [ .. ]", Mais ils n'expliquent pas ce point de vue doit être active pour obtenir un de ces boutons. Cela signifie donc que le UIToolBar est prêt à récupérer des Boutons sur viewDidAppear et PAS sur viewDidLoad message.
Peut-être que vous pouvez utiliser interface builder pour éviter cela, cependant, il sera plus lent
http://developer.apple.com/iphone/library/documentation/UIKit/Reference/UINavigationController_Class/Reference/Reference.html
"La navigation de l'objet contrôleur gère désormais une option de la barre d'outils de son point de vue de la hiérarchie. Lors de l'affichage, cette barre d'outils obtient son ensemble actuel des éléments de la toolbarItems propriété de l'actif-vue-contrôleur."
Avez-vous essayé de sous-classement UITableViewController pour votre tableview et mise en place avec le toolbarItems propriété?
J'ai fait une-vue-contrôleur, qui est une sous-classe de UITableViewController, et j'ai la barre d'outils de travail en procédant comme suit:
Dans le viewDidLoad:
Ensuite, parce que je veux la barre d'outils uniquement sur cet écran, j'ai ajouté ceci à viewWillAppear:
Et enfin, je masquer la barre d'outils nouveau dans viewWillDisappear:
Cela fonctionne pour moi, le "texte" des boutons, construit dans les icônes et icônes personnalisées.