uitableviewcontroller uitableviewcell tutorial custom ios uitableview swift nsindexpath

ios - tutorial - uitableviewcell



Actualice cierta fila de UITableView basada en Int en Swift (7)

Soy un desarrollador principiante en Swift y estoy creando una aplicación básica que incluye una UITableView. Quiero actualizar una cierta fila de la tabla usando:

self.tableView.reloadRowsAtIndexPaths(paths, withRowAnimation: UITableViewRowAnimation.none)

y quiero que la fila que se actualizará sea desde un Int llamado rowNumber

El problema es que no sé cómo hacer esto y todos los hilos que he buscado son para Obj-C

¿Algunas ideas?


Además, si tiene secciones para tabla vista, no debe tratar de encontrar todas las filas que desea actualizar, debe usar las secciones de recarga. Es un proceso fácil y más equilibrado:

yourTableView.reloadSections(IndexSet, with: UITableViewRowAnimation)


Para una solución de animación de impacto suave:

Swift 3:

let indexPath = IndexPath(item: row, section: 0) tableView.reloadRows(at: [indexPath], with: .fade)

Swift 2.x:

let indexPath = NSIndexPath(forRow: row, inSection: 0) tableView.reloadRowsAtIndexPaths([indexPath], withRowAnimation: .Fade)

Esta es otra forma de proteger la aplicación de colisiones:

Swift 3:

let indexPath = IndexPath(item: row, section: 0) if let visibleIndexPaths = tableView.indexPathsForVisibleRows?.index(of: indexPath as IndexPath) { if visibleIndexPaths != NSNotFound { tableView.reloadRows(at: [indexPath], with: .fade) } }

Swift 2.x:

let indexPath = NSIndexPath(forRow: row, inSection: 0) if let visibleIndexPaths = tableView.indexPathsForVisibleRows?.indexOf(indexPath) { if visibleIndexPaths != NSNotFound { tableView.reloadRowsAtIndexPaths([indexPath], withRowAnimation: .Fade) } }


Puede crear un NSIndexPath usando la fila y el número de sección, luego vuelva a cargarlo de la siguiente manera:

let indexPath = NSIndexPath(forRow: rowNumber, inSection: 0) tableView.reloadRowsAtIndexPaths([indexPath], withRowAnimation: UITableViewRowAnimation.Top)

En este ejemplo, he supuesto que su tabla solo tiene una sección (es decir, 0) pero puede cambiar ese valor en consecuencia.

Actualización para Swift 3.0:

let indexPath = IndexPath(item: rowNumber, section: 0) tableView.reloadRows(at: [indexPath], with: .top)


Qué tal si:

self.tableView.reloadRowsAtIndexPaths([NSIndexPath(rowNumber)], withRowAnimation: UITableViewRowAnimation.Top)


En Swift 3.0

let rowNumber: Int = 2 let sectionNumber: Int = 0 let indexPath = IndexPath(item: rowNumber, section: sectionNumber) self.tableView.reloadRows(at: [indexPath], with: .automatic)

Por defecto, si solo tiene una sección en TableView, puede poner el valor de la sección 0.


Swift 4

let indexPathRow:Int = 0 let indexPosition = IndexPath(row: indexPathRow, section: 0) tableView.reloadRows(at: [indexPosition], with: .none)


let indexPathRow:Int = 0 let indexPosition = IndexPath(row: indexPathRow, section: 0) tableView.reloadRows(at: [indexPosition], with: .none)