ios uirefreshcontrol

ios - pull to refresh swift 4



Antecedentes de UIRefreshControl y UITableView (4)

Este problema se soluciona fácilmente al no utilizar la propiedad self.refreshControl en el UITableViewController, en su lugar, cree su propia propiedad y funcionará bien.

Tengo un UITableViewController en el que configuro un backgroundView. Este controlador tiene un UIRefreshControl instalado. El problema es que cuando configuro una vista de fondo, el control de actualización es invisible. Si quito la vista de fondo, puedo ver el control de actualización.

¿Estoy haciendo algo mal?


Parece que UITableViewController empuja su UIRefreshControl para volver al índice 0 durante la recarga (detrás de su "backgroundView"), independientemente de en qué índice lo coloque en primer lugar. Esto es lo que me funcionó (iOS 9): deshabilitar la actualización en IB. Cree UIRefreshControl en el código y agréguelo a tableView después de configurar backgroundView:

let someView = UIView() self.tableView.backgroundView = someView let refreshControl = UIRefreshControl() refreshControl.addTarget(self, action: #selector(MyTableViewController.refresh(_:)), forControlEvents: .ValueChanged) self.tableView.insertSubview(refreshControl, atIndex: 1)


Puede intentar enviar el fondo a la parte posterior o el control de actualización al frente. El control de actualización es más que probable simplemente sentado en el índice 0.


El motivo de este comportamiento es que en iOS 7, la UITableView de backgroundView del UIRefreshControl se dibuja sobre el UIRefreshControl . No estoy seguro de si esto es por diseño o por un problema, pero aquí hay una solución que lo solucionó:

self.tableView.backgroundView.layer.zPosition -= 1;

Este código va donde usted configura la propiedad UITableViewController refreshControl .