Come faccio a rimuovere un pulsante dalla barra degli strumenti di un controller della vista su iPhone?

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

Domanda

Ho codice che funziona alla grande per l'aggiunta di un pulsante alla barra degli strumenti:

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

Tuttavia, voglio anche essere in grado di rimuovere barra degli strumenti di elementi. Quando uso il sottostante metodo, la mia domanda si blocca:

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

Qualcuno sa come posso modificare dinamicamente la barra degli strumenti su iPhone?

Grazie!

È stato utile?

Soluzione

trasformarla in una NSMutableArray.

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

self.toolbarItems = _toolbarItems;

Quando si desidera rimuovere elementi dalla matrice:

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

self.toolbarItems = _toolbarItems;

Nota che in questo caso non si dovrebbe usare removeObject dal momento che avete a ripetere gli oggetti nella propria matrice, e chiamando [ _toolbarItems removeObject: flexibleSpace ] sarà effettivamente rimuovere entrambe le istanze di flexibleSpace nella matrice

Altri suggerimenti

Per rimuovere elementi dalla parte anteriore o posteriore, è possibile utilizzare subarrayWithRange, cioè:.

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

Se si desidera rimuovere gli oggetti dal mezzo, si potrebbe o uso -[NSArray filteredArrayUsingPredicate:] (che potrebbe essere troppo complicato), o la forza bruta:

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

Si noti che non si dovrebbe inviare removeObjectAtIndex: a self.toolbarItems direttamente (anche se si utilizza il metodo di cui sopra), dal momento che toolbarItems è esposto come un NSArray - avrete modo ottenere un avviso del compilatore, e possibilmente un crash (dal momento che non ha il controllo su se sarà effettivamente implementato come NSMutableArray dietro le quinte).

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top