Como faço para que o botão excluir apareça ao passar em um UITableViewCell
? O evento nunca é gerado e o botão excluir nunca aparece.
ios
uitableview
cocoa-touch
uikit
TheLearner
fonte
fonte
UITableViewCell
s.Respostas:
Durante a inicialização em
(-viewDidLoad or in storyboard)
do:Substituir para oferecer suporte à edição condicional da exibição da tabela. Isso só precisa ser implementado se você voltar
NO
para alguns itens. Por padrão, todos os itens são editáveis.fonte
self.tableView.allowsMultipleSelectionDuringEditing = NO;
o deslize para a esquerda para funcionar. Isso me parece um bug, porque a tabela NÃO está no estado de edição. Esta opção deve aplicar apenas "Durante a edição". No entanto, ele funciona agora e eu o defino como SIM sempre que a tabela está entrando no estado de edição.Esta resposta foi atualizada para o Swift 3
Eu sempre acho que é bom ter um exemplo muito simples e independente para que nada seja assumido quando estou aprendendo uma nova tarefa. Esta resposta é para excluir
UITableView
linhas. O projeto tem o seguinte desempenho:Este projeto é baseado no exemplo UITableView para Swift .
Adicione o código
Crie um novo projeto e substitua o código ViewController.swift pelo seguinte.
O método de chave única no código acima que permite a exclusão de linhas é o último. Aqui está novamente para enfatizar:
Storyboard
Adicione um
UITableView
ao View Controller no storyboard. Use o layout automático para fixar os quatro lados da vista da tabela nas bordas do View Controller. Arraste o controle da exibição da tabela no storyboard para a@IBOutlet var tableView: UITableView!
linha no código.Acabado
Isso é tudo. Agora você poderá executar seu aplicativo e excluir linhas deslizando para a esquerda e tocando em "Excluir".
Variações
Alterar o texto do botão "Excluir"
Adicione o seguinte método:
Ações de botões personalizados
Adicione o seguinte método.
Observe que isso só está disponível no iOS 8. Consulte esta resposta para obter mais detalhes.
Atualizado para iOS 11
As ações podem ser colocadas à frente ou à direita da célula usando métodos adicionados à API UITableViewDelegate no iOS 11.
Leitura adicional
fonte
UITableView
um , este é um completamente ficar projeto sozinho e você não precisa fazer qualquer coisa que não é descrito aqui. O motivo pelo qual comecei a defini-lo no código é que ele requer menos explicações nas minhas respostas. Devo voltar e editar o exemplo básico para usar o código também.Este código mostra como implementar a exclusão.
Opcionalmente, em sua substituição de inicialização, adicione a linha abaixo para mostrar o item do botão Editar:
fonte
Eu tive um problema que acabei de resolver e estou compartilhando, pois pode ajudar alguém.
Eu tenho um UITableView e adicionei os métodos mostrados para permitir que o furto exclua:
Estou trabalhando em uma atualização que me permite colocar a tabela no modo de edição e ativar a seleção múltipla. Para fazer isso, adicionei o código do exemplo TableMultiSelect da Apple . Depois que eu comecei a trabalhar, descobri que meu furto, a função de exclusão, parou de funcionar.
Acontece que a adição da seguinte linha ao viewDidLoad foi o problema:
Com essa linha, a seleção múltipla funcionaria, mas o toque para excluir não funcionaria. Sem a linha, era o contrário.
O conserto:
Adicione o seguinte método ao seu viewController:
Em seguida, no seu método que coloca a tabela no modo de edição (pressionando um botão, por exemplo), você deve usar:
ao invés de:
Isso significa que a seleção múltipla é ativada apenas quando a tabela está no modo de edição.
fonte
Abaixo UITableViewDataSource irá ajudá-lo a excluir deslize
arrYears é um NSMutableArray e recarrega o tableView
Rápido
fonte
No iOS 8 e Swift 2.0, tente isso,
fonte
A resposta de @ Kurbz é incrível, mas quero deixar esta nota e espero que esta resposta possa economizar tempo para as pessoas.
Ocasionalmente, eu tinha essas linhas no meu controlador e elas faziam com que o recurso de passagem não funcionasse.
Se você usa
UITableViewCellEditingStyleInsert
ouUITableViewCellEditingStyleNone
como estilo de edição, o recurso de deslizar não funciona. Você só pode usarUITableViewCellEditingStyleDelete
, que é o estilo padrão.fonte
Swift 4
fonte
Além disso, isso pode ser alcançado no SWIFT usando o método a seguir
fonte
Swift 3
Tudo que você precisa fazer é ativar essas duas funções:
fonte
Eu sei que é uma pergunta antiga, mas a resposta @Kurbz só precisa disso para o Xcode 6.3.2 e o SDK 8.3
Preciso adicionar
[tableView beginUpdates]
e[tableView endUpdates]
(graças a @ bay.phillips aqui )fonte
Quando você remove uma célula da sua tableview, também precisa remover o objeto da matriz no índice x.
Eu acho que você pode removê-lo usando um gesto de furto. A visualização da tabela chamará o Delegado:
Depois de remover o objeto. Você precisa recarregar o uso da tableview. Adicione a seguinte linha no seu código:
depois disso, você excluiu a linha com sucesso. E quando você recarrega a exibição ou adiciona dados ao DataSource, o objeto não estará mais lá.
Para todos os outros, a resposta de Kurbz está correta.
Eu só queria lembrá-lo de que a função delegar não será suficiente se você desejar remover o objeto da matriz DataSource.
Espero ter ajudado você.
fonte
[tableView reloadData]
chamada[tableView deleteRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationAutomatic]
.fonte
Swift 2.2:
fonte
Para Swift, basta escrever este código
Para o Objetivo C, basta escrever este código
fonte
para o código swift4, primeiro habilite a edição:
adicione a ação de exclusão ao delegado de edição:
fonte
Swift 4,5
Para excluir uma célula ao deslizar, existem dois métodos internos do UITableView. Escreva esse método na extensão TableSource DataSource.
fonte
Se você estiver adotando fontes de dados diferentes, precisará mover os retornos de chamada delegados para uma
UITableViewDiffableDataSource
subclasse. Por exemplo:fonte