Comment puis-je supprimer un bouton de la barre d'outils d'un contrôleur de vue sur l'iPhone?
-
26-09-2019 - |
Question
J'ai le code qui fonctionne très bien pour ajouter un bouton à la barre d'outils:
NSArray* toolbarItems = [NSArray arrayWithObjects:flexibleSpace,shuffleBarItem,flexibleSpace,nil];
self.toolbarItems = toolbarItems;
Cependant, je veux aussi être en mesure de supprimer la barre d'outils éléments. Lorsque j'utilise la méthode ci-dessous, ma plante demande:
NSArray* toolbarItems = [NSArray arrayWithObjects:flexibleSpace,nil];
self.toolbarItems = toolbarItems;
Quelqu'un sait comment je peux modifier dynamiquement la barre d'outils sur l'iPhone?
Merci!
La solution
Modifier dans un NSMutableArray
.
NSMutableArray* _toolbarItems = [NSMutableArray arrayWithCapacity: 3];
[ _toolbarItems addObjects: flexibleSpace,shuffleBarItem,flexibleSpace,nil];
self.toolbarItems = _toolbarItems;
Si vous voulez supprimer des éléments du tableau:
NSInteger indexOfItem = ...
[ _toolbarItems removeObjectAtIndex: indexOfItem ];
self.toolbarItems = _toolbarItems;
Notez que dans ce cas, vous ne devez pas utiliser removeObject
puisque vous avez répéter des objets dans votre tableau, et appelant [ _toolbarItems removeObject: flexibleSpace ]
supprimera effectivement les deux instances de flexibleSpace
dans le tableau
Autres conseils
Pour supprimer des éléments de l'avant ou à l'arrière, vous pouvez utiliser subarrayWithRange
, i.e.:.
NSRange allExceptLast;
allExceptLast.location = 0;
allExceptLast.length = [self.toolbarItems count] - 1;
self.toolbarItems = [self.toolbarItems subarrayWithRange:allExceptLast];
Si vous voulez supprimer des objets du milieu, vous pouvez soit utiliser -[NSArray filteredArrayUsingPredicate:]
(qui pourrait être trop compliqué), ou la force brute:
NSMutableArray *mutToolbarItems = [NSMutableArray arrayWithArray:self.toolbarItems];
[mutToolbarItems removeObjectAtIndex:<index of object>];
self.toolbarItems = mutToolbarItems;
Notez que vous ne devez pas envoyer removeObjectAtIndex:
à self.toolbarItems
directement (même si vous utilisez la méthode ci-dessus), puisque toolbarItems
est exposé comme NSArray
- un avertissement vous en aurez du compilateur, et peut-être un accident (puisque vous n'avez pas contrôler si elle sera effectivement mis en œuvre comme NSMutableArray
dans les coulisses).