Qual é a maneira mais fácil de adicionar uma linha em um uabableView com uma string fornecida pelo usuário?

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

  •  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?

Foi útil?

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

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