2014-04-19 4 views
0

J'ai mis en œuvre un UIRefreshControl pour UICollectionView de sorte que l'utilisateur peut tirer pour actualiser le contenu en UICollectionView. Je suis en train de tester sur le simulateur d'iPad.UIRefreshControl icône de chargement encore en cours de chargement

Lors de la première tentative, je peux extraire et actualiser le contenu. Cependant, je remarque que l'icône de chargement est toujours en cours de chargement et ne s'arrête pas. Lors de ma deuxième tentative avec l'icône de chargement toujours affichée, j'ai tiré pour actualiser mais il ne parvient pas à appeler mon sélecteur (refreshCollectionAction).

Voici ce que je faisais:

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

    // Register collectionView pull down to refresh 
    UIRefreshControl *refreshControl = [[UIRefreshControl alloc] init]; 
    [refreshControl addTarget:self action:@selector(refreshCollectionAction) 
      forControlEvents:UIControlEventValueChanged]; 
    [self.collectionView addSubview:refreshControl]; 
    self.collectionView.alwaysBounceVertical = YES; 
..... 
} 

-(void)refreshCollectionAction 
{ 
    NSLog(@"refresh collection action"); 

    // Empty product Items Array 
    [[ProductStore getInstance] emptyProductInStore]; 

    NSInteger numOfProductInStore = [[[ProductStore getInstance] allProductItems] count]; 
    if (numOfProductInStore <= 0) { 
     // Fetch data from webservice and reload collectionView 
     [self fetchFeed:@""]; 
    } 
} 

Suis-je manque quelques configurations? fetchFeed demandera les données des services Web. J'ai vérifié que le service web fonctionne toujours.

Répondre

3
[self.refreshControl endRefreshing]; 

Appelez cette méthode à la fin de toute opération de rafraîchissement (si elle a été initiée programme ou par l'utilisateur) pour rendre le contrôle de rafraîchissement à son état par défaut. Si le contrôle d'actualisation est au moins partiellement visible, l'appel de cette méthode le masque également. Si les animations sont également activées, le contrôle est masqué à l'aide d'une animation. UIRefreshControl Class Reference

+0

Добрый день. de Singapour. Merci beaucoup. ça marche maintenant. Je posterai ma solution dans un moment. – nuttynibbles

+0

:) s'il a résolu votre problème, alors marquez-le comme réponse. –

1
@interface ProductSearchViewController() 

@property(nonatomic)UIRefreshControl *refreshControl; 

@end 

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

    // Register collectionView pull down to refresh 
    self.refreshControl = [[UIRefreshControl alloc] init]; 
    [self.refreshControl addTarget:self action:@selector(refreshCollectionAction) 
      forControlEvents:UIControlEventValueChanged]; 
    [self.collectionView addSubview:self.refreshControl]; 
    self.collectionView.alwaysBounceVertical = YES; 

... 
} 

-(void)refreshCollectionAction 
{ 
    NSLog(@"refresh collection action"); 

    // Empty product Items Array 
    [[posProductStore getInstance] emptyProductInStore]; 

    NSInteger numOfProductInStore = [[[posProductStore getInstance] allProductItems] count]; 
    if (numOfProductInStore <= 0) { 
     [self fetchFeed:@""]; 
    } 
    [self.refreshControl endRefreshing]; 
} 

donc en gros je déclare refreshControl comme une variable de classe. comme Neil mentionné, j'ai ajouté [self.refreshControl endRefreshing] à la fin de la méthode -(void)refreshCollectionAction.

Questions connexes