uitableviewcontroller uitableviewcell efecto custom apple iphone objective-c uitableview pull-to-refresh

iphone - uitableviewcell - Tire para actualizar UITableView sin UITableViewController



uitableview swift 4 (6)

Esta solución de @berik funciona bien, pero el UIController se muestra encima del UITableViewController. La forma de solucionarlo es hacer este cambio:

override func viewDidLoad() { let refreshControl = UIRefreshControl() refreshControl.addTarget(self, action: "refresh:", forControlEvents: .ValueChanged) tableView.backgroundView = refreshControl // <- THIS!!! } func refresh(refreshControl: UIRefreshControl) { // Do your job, when done: refreshControl.endRefreshing() }

Estoy tratando de implementar una característica de extracción para actualizar en una UITableView dentro de un UIViewController. No puedo usar un UITableViewController porque quiero que UITableView sea una subvista más pequeña en el controlador de vista, con algunas otras cosas encima. Supongo que esto es posible, pero ¿alguien ha visto una implementación del mismo?


Implementé EGORefreshTableHeaderView con UIViewController y una vista de tabla simple, el truco es que a en los lugares donde EGO toma una vista de desplazamiento como parámetro, si miras la vista de tabla hereda de la vista de desplazamiento.

Solo requiere eso y algunas conexiones adicionales :)

Espero que esto ayude.


Parece que si creas UIRefreshControl dentro del método loadView de viewController todo funciona bien. El UIRefreshControl se comporta como debería. Probado con iOS 7.1 y iOS 8.2


Terminé usando ODRefreshControl . No necesita ningún truco como el anterior tableView.backgroundView = refreshControl , funciona casi de la misma manera y ofrece una interfaz de usuario mejor.


Objective-C :

Así es como puede implementar pull para actualizar para la vista de tabla. Igual que en el caso de la vista de colección. Simplemente reemplace la vista de tabla alloc con la vista de colección.

UITableView *tableViewDemo = [[UITableView alloc]init]; tableViewDemo.frame = CGRectMake(0,0,self.view.frame.size.width,self.view.frame.size.height); tableViewDemo.dataSource = self; tableViewDemo.delegate = self; [self.view addSubView: tableViewDemo]; UIRefreshControl *refreshController = [[UIRefreshControl alloc] init]; [refreshController addTarget:self action:@selector(handleRefresh:) forControlEvents:UIControlEventValueChanged]; [tableViewDemo addSubview:refreshController]; #pragma mark - Handle Refresh Method -(void)handleRefresh : (id)sender { NSLog (@"Pull To Refresh Method Called"); [refreshController endRefreshing]; }


Agregue un control de actualización directamente a UITableView sin usar un UITableViewController :

override func viewDidLoad() { super.viewDidLoad() let refreshControl = UIRefreshControl() refreshControl.addTarget(self, action: #selector(refresh(_:)), for: .valueChanged) if #available(iOS 10.0, *) { tableView.refreshControl = refreshControl } else { tableView.backgroundView = refreshControl } } @objc func refresh(_ refreshControl: UIRefreshControl) { // Do your job, when done: refreshControl.endRefreshing() }