Qual é a maneira mais fácil de adicionar uma linha em um uabableView com uma string fornecida pelo usuário?
-
05-07-2019 - |
Pergunta
Eu tenho um simples UITableViewController
em um UINavigationController
Isso exibe uma lista de strings de uma matriz com o botão Editar/doado padrão no lado direito da barra de navegação.
Ao pressionar o botão Editar, o UITableView
Anima corretamente e mostra os ícones vermelhos menos para excluir. Pressionar o botão Excluir remove a linha da visualização da tabela e a matriz (implementada no tableView:commitEditingStyle:forRowAtIndexPath:
Método do UITableViewController
).
Agora, gostaria de permitir que o usuário adicione uma linha à visualização (e adicione a string à matriz subjacente), mas não tenho certeza de como fazer isso. O método comitititititingstyle tem else if (editingStyle == UITableViewCellEditingStyleInsert)
, mas não sei como posso fazer com que o usuário insira a string.
Eu li o Guia de Programação da Visualização da Tabela (mais especificamente O exemplo de adicionar uma linha de visualização de tabela), mas isso parece exigir um novo novo UIViewController
subclasse apenas para obter uma string do usuário.
Não existe uma maneira mais fácil?
Solução
Criar outro controlador de exibição provavelmente será a maneira mais fácil a longo prazo. Você pode apresentá -lo modalmente ligando
SomeViewController* theViewController = [[SomeViewController alloc] init];
[self presentModalViewController: theViewController animated: YES];
[theViewController release];
Quando o ViewController estiver pronto para ir embora, ele pode ligar
[[self parentViewController] dismissModalViewControllerAnimated: YES];
Ou você pode configurar um protocolo para o seu novo controlador de visualização para que ele possa notificar o controlador de exibição original de conclusão e enviar um valor de volta, se você quiser um nsstring de volta, você pode usar
@protocol MyViewControllerDelegate
- (void)myViewControllerDelegate: (MyViewController*)myViewController didFinishWithValue: (NSString*)theString;
@end
MyViewController teria uma propriedade delegada
@interface MyViewController
{
id<MyViewControllerDelegate> delegate;
}
@property(nonatomic,assign) id<MyViewControllerDelegate> delegate;
@end
Se você usar o método do protocolo, seu controlador de exibição original adotará esse protocolo e descartará a própria visualização modal quando receber esta mensagem.
Espero que ajude, pode parecer um pouco complicado no começo, mas facilita a coleta de dados.
Outras dicas
Você pode usar um UIALERTVIEW ou classe semelhante. Basta exibir a visualização modal para solicitar a string, estabelecer os retornos de chamada certos e, em seguida, coloque -a no seu painel de dados.
Você também pode inserir uma célula com um espaço reservado UITEXTVIEW e um espaço de espaço "Toque para editar" e, em seguida, nos retornos de chamada do TextView, remova o TextView e exiba a string. Mais edições precisariam perfurar ou fazer outra coisa