Comment puis-je supprimer un bouton de la barre d'outils d'un contrôleur de vue sur l'iPhone?

StackOverflow https://stackoverflow.com/questions/2618546

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!

Était-ce utile?

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).

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top