J'essaie d'utiliser la barre d'outils du NavigationController dans mon application. Les toolbarItems de cette barre d'outils sont supposés changer en fonction du contrôleur de vue présenté. C'est très basique. Ce que j'essaie de faire est d'ajouter des boutons personnalisés à la barre d'outils en utilisant la méthode "initWithCustomView:" de UIBarButtonItem. Cependant, le bouton n'apparaîtra pas sur la barre d'outils. Mais si je crée le UIBarButtonItem en utilisant la méthode "initWithTitle:" ou "initWithBarButtonSystemItem:", le bouton apparaît. Par exemple, regardez le code ci-dessous:barre d'outils de uinavigationController avec des éléments personnalisés
UIBarButtonItem *item1 = [[UIBarButtonItem alloc] initWithBarButtonSystemItem: UIBarButtonSystemItemBookmarks target:self action:nil];
UIBarButtonItem *item2 = [[UIBarButtonItem alloc] initWithTitle:@"edit" style:UIBarButtonItemStylePlain target:self action:nil];
NSArray *array = [[NSArray alloc] initWithObjects:item1, item2, nil];
[self setToolbarItems:array];
Si cela est fait, les boutons s'affichent dans la barre d'outils. Mais, si je devais faire ce qui suit:
UIButton* replyBtn = [UIButton buttonWithType:UIButtonTypeCustom];
[replyBtn setImage:[UIImage imageNamed:@"Reply_Message.png"] forState:UIControlStateNormal];
[replyBtn addTarget:self action:@selector(replyButtonTapped:) forControlEvents:UIControlEventTouchUpInside];
replyBtn.frame = CGRectMake(10, 0, 40, 40);
UIBarButtonItem *replyButton = [[UIBarButtonItem alloc] initWithCustomView:replyBtn];
UIBarButtonItem *item1 = [[UIBarButtonItem alloc] initWithBarButtonSystemItem: UIBarButtonSystemItemBookmarks target:self action:nil];
UIBarButtonItem *item2 = [[UIBarButtonItem alloc] initWithTitle:@"edit" style:UIBarButtonItemStylePlain target:self action:nil];
NSArray *array = [[NSArray alloc] initWithObjects:item1, replyButton, item2, nil];
[self setToolbarItems:array];
Dans ce code, seul le Item1 et item2 sont affichées dans la barre d'outils. replyButton n'est pas affiché dans la barre d'outils. Il y a un espace vide à l'endroit où le bouton est supposé être.
Si ce même code est utilisé sur une barre d'outils régulière que je crée à la place de la barre d'outils de NavigationController, le bouton apparaît. J'essaye juste d'employer une barre d'outil tout au long de l'application pour avoir la même sensation que l'application de courrier d'Apple fait. La raison pour laquelle j'ai besoin d'utiliser la méthode "initWithCustomView:" est que l'une des icônes est colorée et c'est la seule façon dont elle apparaît colorée sur une barre d'outils normale. Maintenant, j'ai regardé à travers la documentation d'Apple et il n'y a aucune mention de pourquoi la méthode "initWithCustomView:" n'a pas pu être appelée (ou peut-être que je ne pouvais pas le trouver).
Pourriez s'il vous plaît quelqu'un de faire la lumière sur ce sujet pour m'aider à pointer dans la bonne direction. merci d'avance les gars.
ont exactement le même problème. Je me demande pourquoi cela ne fonctionne pas ... Je pourrais aussi avoir besoin d'ajouter une barre d'outils différente avec "ajouter une sous-vue". –