Wie entferne ich eine Schaltfläche aus einer Symbolleiste des View-Controller auf dem iPhone?

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

Frage

Ich habe Code, der für das Hinzufügen einer Schaltfläche in der Symbolleiste funktioniert gut:

NSArray* toolbarItems = [NSArray arrayWithObjects:flexibleSpace,shuffleBarItem,flexibleSpace,nil];
self.toolbarItems = toolbarItems;

Allerdings möchte ich auch in der Lage sein, Elemente der Symbolleiste zu entfernen. Wenn ich die folgende Methode verwenden, meine Anwendung abstürzt:

NSArray* toolbarItems = [NSArray arrayWithObjects:flexibleSpace,nil];
self.toolbarItems = toolbarItems;

Wer weiß, wie ich dynamisch die Symbolleiste auf dem iPhone ändern kann?

Danke!

War es hilfreich?

Lösung

Ändern in eine NSMutableArray.

NSMutableArray* _toolbarItems = [NSMutableArray arrayWithCapacity: 3]; 
[ _toolbarItems addObjects: flexibleSpace,shuffleBarItem,flexibleSpace,nil];

self.toolbarItems = _toolbarItems;

Wenn Sie Elemente aus dem Array entfernen:

NSInteger indexOfItem = ...
[ _toolbarItems removeObjectAtIndex: indexOfItem ];

self.toolbarItems = _toolbarItems;

Beachten Sie, dass Sie in diesem Fall nicht removeObject verwenden sollten, da Sie Objekte in Ihrem Array wiederholen, und [ _toolbarItems removeObject: flexibleSpace ] Aufruf wird tatsächlich entfernen Sie beide Instanzen von flexibleSpace im Array

Andere Tipps

So entfernen Sie Elemente aus der Vorder- oder Rückseite, Sie subarrayWithRange verwenden könnte, das heißt:.

NSRange allExceptLast;
allExceptLast.location = 0;
allExceptLast.length = [self.toolbarItems count] - 1;
self.toolbarItems = [self.toolbarItems subarrayWithRange:allExceptLast];

Wenn Sie Objekte aus der Mitte zu entfernen, können Sie entweder den Einsatz -[NSArray filteredArrayUsingPredicate:] (die übermäßig kompliziert sein könnte) oder Brute-Force:

NSMutableArray *mutToolbarItems = [NSMutableArray arrayWithArray:self.toolbarItems];
[mutToolbarItems removeObjectAtIndex:<index of object>];
self.toolbarItems = mutToolbarItems;

Beachten Sie, dass Sie nicht removeObjectAtIndex: zu self.toolbarItems senden sollte direkt (auch wenn Sie das obige Verfahren verwenden), da toolbarItems als NSArray ausgesetzt ist - du wirst eine Compiler-Warnung erhalten und möglicherweise zu einem Absturz (da Sie nicht haben Kontrolle darüber, ob es sich tatsächlich als NSMutableArray hinter den Kulissen umgesetzt werden).

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top