Wie entferne ich eine Schaltfläche aus einer Symbolleiste des View-Controller auf dem iPhone?
-
26-09-2019 - |
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!
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).