8
votes

UirefreshControl ne fonctionne pas quand appelé prorgammatique

J'ai un uirefreshcontrol code> dans mon ViewController Code> et une méthode ActuressezVoir code> Pour gérer "Tirage à rafraîchir". Cela fonctionne parfaitement lorsque vous tirez en réalité, mais lorsque j'appelle [rafraîchir le commentaire] code> dans le code, il affiche simplement l'animation d'actualisation mais n'appelle pas la méthode Acturessez Code>.

Voici Code pour l'initialisation de la commande d'actualisation dans ViewDiDload Code>: P>

UIRefreshControl *refresh = [[UIRefreshControl alloc] init];
refresh.attributedTitle = [[NSAttributedString alloc] initWithString:@"Pull to Refresh"];
[refresh addTarget:self
            action:@selector(refreshView:)
  forControlEvents:UIControlEventValueChanged];
self.refreshControl = refresh;


0 commentaires

3 Réponses :


-1
votes

Essayez ceci

​​ViewDiDloadload P> xxx pré>

méthode p> xxx pré>

pour l'arrêter p>

[refreshControl endRefreshing];


2 commentaires

Votre code ViewDidLoad ne diffère pas de la mine. Méthode RefreshMyTableView ne sera pas appelé sur [rafraîchir le commentaire] , toujours.


Essayez de supprimer votre ':' à l'action finale: @Selector (rafraîchira :)



14
votes

Basé sur ma compréhension de la documentation: http: // développeur.apple.com/library/ios/#documentation/uikit/reference/uirefreshcontrol_class/reference/reference.html

raconte le contrôle qu'une opération de rafraîchissement a été lancée programmatiquement. ... appelez cette méthode lorsqu'un événement externe La source déclenche une actualisation programmatique de votre table.

Je pense qu'il n'est pas utilisé pour démarrer une opération de rafraîchissement, il s'agit plutôt de mettre à jour l'état de la commande de rafraîchissement qu'il est actuellement rafraîchissant, dans lequel il effectuera le contrôle de la rafraîchissement. Le but sera d'éviter l'utilisateur tirant la vue de la table et de déclencher l'opération de rafraîchissement lorsqu'il est encore rafraîchissant.

Vous devez donc appeler la mercrevoie: méthode par vous-même.


0 commentaires

0
votes

Appelez simplement le débutant de manière asynchrone.

- (void)viewDidLoad {
   [super viewDidLoad];
   // Do any additional setup after loading the view.

   dispatch_async(dispatch_get_main_queue(), ^{
       [refreshControl beginRefreshing];
   });
   //...
}


0 commentaires