¿Cómo consigo que se muestre el botón Eliminar al deslizar sobre un UITableViewCell
? El evento nunca se genera y el botón Eliminar nunca aparece.
ios
uitableview
cocoa-touch
uikit
TheLearner
fuente
fuente
UITableViewCell
s.Respuestas:
Durante el inicio en
(-viewDidLoad or in storyboard)
do:Anular para admitir la edición condicional de la vista de tabla. Esto solo debe implementarse si va a devolver
NO
algunos artículos. Por defecto, todos los elementos son editables.fuente
self.tableView.allowsMultipleSelectionDuringEditing = NO;
para que el deslizamiento a la izquierda funcionara. Esto me parece un error porque la tabla NO está en estado de edición. Esta opción solo debe aplicarse "Durante la edición". Sin embargo, funciona ahora y lo configuro en SÍ cada vez que la tabla ingresa al estado de edición.Esta respuesta se ha actualizado a Swift 3
Siempre pienso que es bueno tener un ejemplo muy simple y autónomo para que no se asuma nada cuando estoy aprendiendo una nueva tarea. Esta respuesta es para eliminar
UITableView
filas. El proyecto se realiza así:Este proyecto se basa en el ejemplo UITableView para Swift .
Agregar el código
Cree un nuevo proyecto y reemplace el código ViewController.swift con lo siguiente.
El método de clave única en el código anterior que permite la eliminación de filas es el último. Aquí está nuevamente para enfatizar:
Storyboard
Agregue un
UITableView
controlador de vista en el guión gráfico. Use el diseño automático para anclar los cuatro lados de la vista de tabla a los bordes del controlador de vista. Controle el arrastre desde la vista de tabla en el guión gráfico hasta la@IBOutlet var tableView: UITableView!
línea del código.Terminado
Eso es todo. Debería poder ejecutar su aplicación ahora y eliminar filas deslizando el dedo hacia la izquierda y tocando "Eliminar".
Variaciones
Cambiar el texto del botón "Eliminar"
Agregue el siguiente método:
Acciones de botones personalizados
Agrega el siguiente método.
Tenga en cuenta que esto solo está disponible desde iOS 8. Consulte esta respuesta para obtener más detalles.
Actualizado para iOS 11
Las acciones se pueden colocar al inicio o al final de la celda utilizando métodos agregados a la API UITableViewDelegate en iOS 11.
Otras lecturas
fuente
UITableView
uno , este es un proyecto totalmente independiente y no necesita hacer nada que no se describe aquí. La razón por la que comencé a configurarlo en el código es que requiere menos explicación en mis respuestas. Debo volver y editar el ejemplo básico para usar el código también.Este código muestra cómo implementar la eliminación.
Opcionalmente, en su anulación de inicialización, agregue la línea a continuación para mostrar el elemento del botón Editar:
fuente
Tuve un problema que acabo de resolver, así que lo estoy compartiendo, ya que puede ayudar a alguien.
Tengo un UITableView y agregué los métodos que se muestran para habilitar el deslizamiento para eliminar:
Estoy trabajando en una actualización que me permite poner la tabla en modo de edición y permite la selección múltiple. Para hacer eso, agregué el código de la muestra TableMultiSelect de Apple . Una vez que empecé a trabajar, descubrí que al deslizar, la función de eliminación había dejado de funcionar.
Resulta que agregar el siguiente renglón a viewDidLoad fue el problema:
Con esta línea, la selección múltiple funcionaría, pero el deslizamiento para eliminar no lo haría. Sin la línea era al revés.
La solución:
Agregue el siguiente método a su viewController:
Luego, en su método que pone la tabla en modo de edición (por ejemplo, presionando un botón) debe usar:
en vez de:
Esto significa que la selección múltiple solo está habilitada cuando la tabla está en modo de edición.
fuente
A continuación, UITableViewDataSource lo ayudará a eliminar por deslizamiento
arrYears es un NSMutableArray y luego vuelve a cargar la tabla
Rápido
fuente
En iOS 8 y Swift 2.0, intente esto,
fuente
La respuesta de @ Kurbz es increíble, pero quiero dejar esta nota y espero que esta respuesta pueda ahorrarle tiempo a las personas.
De vez en cuando tenía estas líneas en mi controlador, e hicieron que la función de deslizar no funcionara.
Si usa
UITableViewCellEditingStyleInsert
oUITableViewCellEditingStyleNone
como estilo de edición, la función de deslizar no funciona. Solo puede usarUITableViewCellEditingStyleDelete
, que es el estilo predeterminado.fuente
Swift 4
fuente
Además, esto se puede lograr en SWIFT utilizando el método de la siguiente manera
fuente
Swift 3
Todo lo que tiene que hacer es habilitar estas dos funciones:
fuente
Sé que es una pregunta antigua, pero la respuesta de @Kurbz solo la necesita para Xcode 6.3.2 y SDK 8.3
Necesito agregar
[tableView beginUpdates]
y[tableView endUpdates]
(gracias a @ bay.phillips aquí )fuente
Cuando elimina una celda de su vista de tabla, también debe eliminar su objeto de matriz en el índice x.
Creo que puede eliminarlo mediante un gesto de deslizar. La vista de tabla llamará al Delegado:
Después de quitar el objeto. Tienes que recargar el uso de tableview. Agregue la siguiente línea en su código:
después de eso, ha eliminado la fila con éxito. Y cuando vuelva a cargar la vista o agregue datos a DataSource, el objeto ya no estará allí.
Para todos los demás, la respuesta de Kurbz es correcta.
Solo quería recordarle que la función delegar no será suficiente si desea eliminar el objeto de la matriz DataSource.
Espero haberte ayudado.
fuente
[tableView reloadData]
llamada[tableView deleteRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationAutomatic]
.fuente
Swift 2.2:
fuente
Para Swift, solo escribe este código
Para el objetivo C, solo escriba este código
fuente
para el código swift4, primero habilite la edición:
luego agrega una acción de eliminación al delegado de edición:
fuente
Swift 4,5
Para eliminar una celda al deslizar, hay dos métodos integrados de UITableView. Escriba este método en la extensión TableView dataSource.
fuente
Si está adoptando fuentes de datos difusibles, tendrá que mover las devoluciones de llamada delegadas a una
UITableViewDiffableDataSource
subclase. Por ejemplo:fuente