Como remover um botão da barra de ferramentas de um controlador de exibição no iPhone?

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

Pergunta

Eu tenho código que funciona muito bem para adicionar um botão à barra de ferramentas:

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

No entanto, também quero remover itens da barra de ferramentas. Quando uso o método abaixo, meu aplicativo trava:

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

Alguém sabe como posso alterar dinamicamente a barra de ferramentas no iPhone?

Obrigado!

Foi útil?

Solução

Transforme -o em um NSMutableArray.

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

self.toolbarItems = _toolbarItems;

Quando você deseja remover os itens da matriz:

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

self.toolbarItems = _toolbarItems;

Observe que, neste caso, você não deve usar removeObject Como você tem objetos repetidos em sua matriz e ligando [ _toolbarItems removeObject: flexibleSpace ] realmente removerá as duas instâncias de flexibleSpace na matriz

Outras dicas

Para remover itens da frente ou de trás, você pode usar subarrayWithRange, ou seja:

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

Se você quiser remover objetos do meio, você pode usar -[NSArray filteredArrayUsingPredicate:] (que pode ser excessivamente complicado), ou força bruta:

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

Observe que você não deve enviar removeObjectAtIndex: para self.toolbarItems diretamente (mesmo se você usar o método acima), pois toolbarItems é exposto como um NSArray-Você receberá um aviso de compilador e, possivelmente NSMutableArray Por trás das cenas).

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top