objective-c iphone xcode ios6 uirefreshcontrol

objective c - UIRefreshControl iOS 6 xcode



objective-c iphone (3)

¿Alguien tiene un pequeño ejemplo de cómo implementar el nuevo UIRefreshControl en xcode? Tengo un UITableViewController que muestra Tweets, quiere poder desplegar y actualizar.


Aquí cómo lo haces hacia abajo y refresca

En su UITableViewController.h, agregue UIRefreshControl *refreshControl; y -(void) refreshMyTableView; declaración global del método

y en viewDidLoad de UITableViewController.m

//initialise the refresh controller refreshControl = [[UIRefreshControl alloc] init]; //set the title for pull request refreshControl.attributedTitle = [[NSAttributedString alloc]initWithString:@"pull to Refresh"]; //call he refresh function [refreshControl addTarget:self action:@selector(refreshMyTableView) forControlEvents:UIControlEventValueChanged]; self.refreshControl = refreshControl;

y actualizar la función con fecha y hora de actualización

-(void)refreshMyTableView{ //set the title while refreshing refreshControl.attributedTitle = [[NSAttributedString alloc]initWithString:@"Refreshing the TableView"]; //set the date and time of refreshing NSDateFormatter *formattedDate = [[NSDateFormatter alloc]init]; [formattedDate setDateFormat:@"MMM d, h:mm a"]; NSString *lastupdated = [NSString stringWithFormat:@"Last Updated on %@",[formattedDate stringFromDate:[NSDate date]]]; refreshControl.attributedTitle = [[NSAttributedString alloc]initWithString:lastupdated]; //end the refreshing [refreshControl endRefreshing]; }


Puede configurarlo en su viewDidLoad , si tiene un UITableViewController :

UIRefreshControl *refreshControl = [[UIRefreshControl alloc] init]; [refreshControl addTarget:self action:@selector(refresh) forControlEvents:UIControlEventValueChanged]; self.refreshControl = refreshControl;

Entonces puedes hacer tus cosas de actualización aquí:

-(void)refresh { // do something here to refresh. }

Cuando [self.refreshControl endRefreshing]; actualizar, llame a [self.refreshControl endRefreshing]; para detener el control de actualización, como lo señala rjgonzo.


También puede configurar esto en Interface Builder. Aunque la forma en que funciona actualmente, solo te ahorra un par de líneas de código.

Seleccione la escena TableViewController y en el Inspector de atributos, encontrará una opción de lista desplegable para "Actualizar". Ponlo en "Habilitado". Notarás en la Jerarquía del Controlador de Vista que se ha agregado un "Control de Refresco" (no verás nada agregado visualmente a la escena). Lo que es extraño es que después de conectar el control de actualización a un IBAction (evento de cambio de valor) el evento no parece activarse. Supongo que es un error (?) Pero mientras tanto, al configurar "Refreshing" para habilitar, crea el objeto UIRefreshControl y lo asigna a la propiedad refreshControl del controlador de la vista. Una vez hecho esto, puede agregar la línea de manejo de eventos a su método viewDidLoad:

[self.refreshControl addTarget:self action:@selector(refreshView:) forControlEvents:UIControlEventValueChanged];

En su método refreshView: puede hacer un poco de trabajo y luego detener la animación de actualización:

- (void)refreshView:(UIRefreshControl *)sender { // Do something... [sender endRefreshing]; }