2014-04-19 59 views
0

我爲UICollectionView實施了UIRefreshControl,這樣用戶就可以拉動以刷新UICollectionView中的內容。我正在iPad模擬器上測試。UIRefreshControl加載圖標仍在加載

第一次嘗試時,我可以拉取和刷新內容。但是,我注意到加載圖標仍在加載並且不停止。在我第二次嘗試加載圖標仍然顯示時,我拉起來刷新,但它沒有打電話給我的選擇器(refreshCollectionAction)。

這裏是我做過什麼:

-(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:@""]; 
    } 
} 

我錯過了一些配置? fetchFeed將向Web服務請求數據。我已經證實,web服務仍然有效。

回答

3
[self.refreshControl endRefreshing]; 

調用此方法可在任何刷新操作結束(它是否被編程或由用戶發起)返回刷新控制到其默認狀態。如果刷新控件至少部分可見,則調用此方法也會隱藏它。如果還啓用了動畫,則該控件將使用動畫隱藏。 UIRefreshControl Class Reference

+0

Добрыйдень。來自新加坡。非常感謝你。它現在正在工作。我會在一段時間後發佈我的解決方案。 – nuttynibbles

+0

:)如果它解決了您的問題,然後將其標記爲答案。 –

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

所以基本上我聲明refreshControl爲類變量。正如尼爾提到的,我在方法-(void)refreshCollectionAction的末尾添加了[self.refreshControl endRefreshing]