Eu tenho uma matriz de strings que desejo usar para títulos de botão em um UIActionSheet. Infelizmente, o argumento otherButtonTitles: na invocação do método leva uma lista de strings de comprimento variável, não um array.
Então, como posso passar esses títulos para o UIActionSheet? A solução alternativa que vi sugerida é passar nil para otherButtonTitles: e, em seguida, especificar os títulos dos botões individualmente usando addButtonWithTitle :. Mas isso tem o problema de mover o botão "Cancelar" para a primeira posição na UIActionSheet em vez da última; Eu quero que seja o último.
Existe uma maneira de 1) passar um array no lugar de uma lista de variáveis de strings ou, alternativamente, 2) mover o botão de cancelamento para a parte inferior da UIActionSheet?
Obrigado.
fonte
Respostas:
Eu fiz isso funcionar (você só precisa estar ok com um botão normal e apenas adicioná-lo após:
fonte
cancelButton
não é vermelho. OdestructiveButton
é vermelho.[UIActionSheet addButtonWithTitle]
não parece estar configurado corretamentefirstOtherButtonIndex
(que deve ser usado no delegado emactionSheet:clickedButtonAtIndex:
vez de codificar 0 ou algo semelhante). Ser desagradável ao converter umNSArray
parava_list
também não parece uma boa solução. :-( Esta API é tão feia.Uma pequena observação: [actionSheet addButtonWithTitle:] retorna o índice desse botão, portanto, para estar seguro e "limpo", você pode fazer o seguinte:
fonte
destructiveButtonIndex
para elePegando as respostas de Jaba e Nick e estendendo-as um pouco mais. Para incorporar um botão de destruição a esta solução:
fonte
Esta é a versão rápida para a resposta:
Para obter o valor selecionado, adicione delegado ao seu ViewController:
E implemente o método "clickedButtonAtIndex"
fonte