web-dev-qa-db-fra.com

UIRefreshControl iOS 6 xcode

Quelqu'un at-il un court exemple de la façon d'implémenter le nouveau UIRefreshControl dans xcode. J'ai un UITableViewController qui affiche les Tweets, je veux pouvoir dérouler et rafraîchir.

42
Gareth

Vous pouvez simplement le configurer dans votre viewDidLoad, si vous avez un UITableViewController:

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

Ensuite, vous pouvez faire votre rafraîchissement ici:

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

Lorsque vous avez terminé l'actualisation, appelez [self.refreshControl endRefreshing]; pour arrêter le contrôle de rafraîchissement, comme indiqué par rjgonzo.

68
danqing

Vous pouvez également configurer cela dans Interface Builder. Bien que cela fonctionne actuellement, il ne vous fait économiser que quelques lignes de code.

Sélectionnez la scène TableViewController et dans l'inspecteur des attributs, vous trouverez une option de liste déroulante pour "Rafraîchir". Réglez-le sur "Activé". Vous remarquerez dans la hiérarchie du contrôleur de vue qu'un "contrôle de rafraîchissement" a été ajouté (vous ne verrez rien ajouté visuellement à la scène elle-même). Ce qui est étrange, c'est qu'après avoir connecté le contrôle d'actualisation à un IBAction (événement de changement de valeur), l'événement ne semble pas être déclenché. Je suppose que c'est un bogue (?), Mais en attendant, définir "Actualisation" sur activé crée l'objet UIRefreshControl et l'assigne à la propriété refreshControl du contrôleur de vue. Cela fait, vous pouvez ajouter la ligne de gestion des événements à votre méthode viewDidLoad:

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

Dans votre méthode refreshView:, vous pouvez effectuer certains travaux, puis arrêter l'animation de rafraîchissement:

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

Voici comment vous tirez vers le bas et actualisez

Dans votre ITableViewController.h ajoutez la déclaration globale de la méthode UIRefreshControl *refreshControl; Et -(void) refreshMyTableView;

et dans viewDidLoad de ITableViewController.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;

et fonction de rafraîchissement avec date et heure de rafraîchissement

-(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];

}
18
iMeMyself