¿Cómo se quita un botón de la barra de herramientas de un controlador de vista en el iPhone?
-
26-09-2019 - |
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!
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).