¿Cómo se quita un botón de la barra de herramientas de un controlador de vista en el iPhone?

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

Pregunta

Tengo código que funciona muy bien para añadir un botón a la barra de herramientas:

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

Sin embargo, también quiero ser capaz de eliminar la barra de herramientas artículos. Cuando utilizo el siguiente método, mi aplicación se bloquea:

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

¿Alguien sabe cómo puedo modificar dinámicamente la barra de herramientas en el iPhone?

Gracias!

¿Fue útil?

Solución

convertirla en una NSMutableArray.

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

self.toolbarItems = _toolbarItems;

Cuando se desea eliminar elementos de la matriz:

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

self.toolbarItems = _toolbarItems;

Nota que en este caso no se debe utilizar removeObject ya que han de repetir objetos en su conjunto, y llamando [ _toolbarItems removeObject: flexibleSpace ] en realidad quite las dos instancias de flexibleSpace en la matriz

Otros consejos

Para eliminar elementos de la parte delantera o trasera, se puede usar subarrayWithRange, es decir:.

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

Si desea eliminar objetos de la media, que podría o uso -[NSArray filteredArrayUsingPredicate:] (que podría ser complicado excesivamente), o la fuerza bruta:

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

Tenga en cuenta que no debe enviar a removeObjectAtIndex: self.toolbarItems directamente (incluso si se utiliza el método anterior), ya que toolbarItems se expone como un NSArray - usted recibirá una advertencia del compilador, y posiblemente un accidente (ya que no tiene el control sobre si realmente se implementa como un NSMutableArray detrás de las escenas).

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top