UIBarButtonItem changement de titre ne fonctionne pas
Comment puis-je changer le titre d'un UIBarButtonItem? J'ai le code suivant qui est appelée lorsque le bouton "modifier" est pressé sur mon UINavigationBar.
-(void)editButtonSelected:(id)sender {
NSLog(@"edit button selected!");
if(editing) {
NSLog(@"notediting");
[super setEditing:NO animated:NO];
[tableView setEditing:NO animated:NO];
[tableView reloadData];
[rightButtonItem setTitle:@"Edit"];
[rightButtonItem setStyle:UIBarButtonItemStylePlain];
editing = false;
}
else {
NSLog(@"editing");
[super setEditing:YES animated:YES];
[tableView setEditing:YES animated:YES];
[tableView reloadData];
[rightButtonItem setTitle:@"Done"];
[rightButtonItem setStyle:UIBarButtonItemStyleDone];
editing = true;
}
}
Le bouton "modifier" est en train de changer de couleur (donc la ligne qui définit le style de travail), toutefois la ligne qui définit le titre du bouton ne fonctionne pas.
InformationsquelleAutor CodeGuy | 2011-05-27
Vous devez vous connecter pour publier un commentaire.
J'ai fait ce qui suit pour modifier dynamiquement le titre d'un UIBarButtonItem. Dans cette situation, je ne suis pas à l'aide d'un UIViewTableController et ne peuvent pas utiliser la norme boutons editbutton. Je l'ai vue avec un tableView ainsi que d'autres sous-vues et voulait imiter le comportement de l'limité UIViewTableController.
Notez que je n'ai pas utiliser le UIBarButtonSystemItemEdit barButton, vous ne pouvez pas modifier manuellement le nom du bouton, qui fait sens.
Vous pouvez également profiter de la possibleTitles de la propriété, de sorte que le bouton n'est pas redimensionnée lorsque vous modifiez le titre.
Si vous utilisez une table de montage séquentiel/XIB pour créer et/ou mettre ces boutons, de s'assurer que le Bouton de la Barre d'Identificateur d'Élément est défini sur Personnalisé pour le bouton que vous voulez contrôler le titre pour.
possibleTitles
. Bizarre que vous devez déclarer les possibilités à l'avant, mais cela semblait résoudre cela pour moi.J'ai eu ce problème et l'a résolu en définissant les UIBarButtonItem style pour le type personnalisé lorsqu'il est initialisé. Les titres seraient définies lors de la modification de leur titre de valeurs.
Vous pouvez également définir la possibleTitle valeur dans la méthode viewDidLoad pour s'assurer que le bouton est correctement dimensionné pour tous les titres possibles qu'il peut avoir.
Dans mon cas, ce qui a empêché le titre affiché était que, dans le xib j'avais sélectionné le bouton de la Barre d'élément "identificateur" propriété "Annuler".
J'ai essayé de définir le titre de propriété, même avant d'assigner le bouton de la barre de navigation, mais le titre n'a pas été mis à jour.
Je l'ai fait comme ceci:
Et il a commencé à travailler comme je le voulais.
Si vous regardez la documentation de la
titre
de la propriété, il est expressément mentionné que vous devez le régler avant de l'affecter à la barre de navigation. Au lieu de faire ce que vous faites maintenant, vous pouvez utiliser deux bouton de la barre d'objets – un pour le faire et un pour le modifier, et de les mettre sinon.possibleTitles
de la propriété. Je n'ai eu aucun problème de changer letitle
propriété à la volée, comme Gordon dit -- quel est le point de lapossibleTitles
propriété si le titre ne peut pas être changé?possibleTitles
est de fournir des solutions de rechange quand il n'y a plus ou moins d'espace sur la barre de navigation (par exemple paysage vs portrait, iPhone 4 vs iPhone 6 Plus vs iPad).En fait, si tout ce que vous voulez si la commutation entre "Modifier" et "Fait", il suffit d'utiliser
self.navigationItem.rightBarButtonItem = self.editButtonItem;
Il va gérer cette transition pour vous
UIBarButtonSystemItemEdit
alors oui apple utilise beaucoup d'objets immuables, et il est logique de ne pas être en mesure de modifier le titre de "Modifier" à "Terminé" sur une classe avec le mot de modifier en elle.Il suffit de passer les boutons à chaque fois que l'utilisateur appuie sur eux.
Et puis créer une IBAction pour gérer appuyez sur le bouton:
Swift 3.0, 3.2 ou 4.0
Si votre personnalisé ViewController contenant un tableView objet suit le UITableViewController Délégué et de source de données, protocoles, vous pouvez ajouter un système de editBarButtonItem à votre
navigationItem.leftBarButtonItem
(s) ounavigationItem.rightBarButtonItem
(s) avec le code suivant:Essayer:
Parce que
rightBarButtonItem.customView == “the button your added”
.