2013-02-16 7 views

risposta

4

Ecco una categoria per la classe CCBottomRefreshControl UIScrollView (controllante di classe UICollectionView) che implementa bottomRefreshControl proprietà. È compatibile con i controlli di aggiornamento nativo per iOS 6 e 7.

-2

Non è possibile. Non è possibile personalizzare veramente UIRefreshControl.

9

Non è possibile utilizzare UIRefreshControl per farlo, ma se si sta bene con una soluzione più semplice, è possibile semplicemente impostare la vista raccolta per caricare automaticamente più dati quando si scorre verso il basso. (Per inciso, questa è un'interfaccia utente molto più comune ... il pull up per l'aggiornamento non è comune, ma il recupero automatico di più dati quando si preme il fondo è.)

La resa più primitiva sarebbe quella di rispondere al metodo UIScrollViewDelegate e determinare se hai scorrere a parte inferiore della vista di raccolta (che è, a sua volta, una sottoclasse della UIScrollView):

- (void)scrollViewDidScroll:(UIScrollView *)scrollView 
{ 
    if ((scrollView.contentOffset.y + scrollView.frame.size.height) >= scrollView.contentSize.height) 
    { 
     if (!self.isLoadingMoreData) 
     { 
      self.loadingMoreData = YES; 

      // proceed with the loading of more data 
     } 
    } 
} 

ancora meglio, se si dispone di più dati da caricare, spettacolo una cella in fondo, che dice "per favore aspetta, carica più dati", magari con un UIActivityIndicatorView. Ad esempio, se hai più dati da caricare, aggiungi una sezione alla fine con questa cella. Se si formatta correttamente questa cella aggiuntiva (ad es. Una singola cella che attraversa tutta la vista della raccolta), potrebbe sicuramente rendere l'effetto che si sta cercando.

+0

Avete un codice di esempio per fornire all'utente questa notifica? Carico i dati quando lo scorrimento termina e tutto funziona correttamente. Ora ho solo bisogno della notifica quando i dati si stanno caricando. Non è così semplice caricare una cella in più per fare questa notifica. Grazie! –

+1

@ S.Birklin - Penso che sia più facile di quanto sospetti. Basta avere il tuo 'numberOfRowsForSection' per restituire una riga in più (assumendo che tu abbia dati extra da recuperare). Quindi 'cellForRowAtIndexPath' può solo vedere se è andato oltre il suo intervallo di dati esistenti e mostra la cella di" caricamento ", se questo è il caso. Vedi https://github.com/robertmryan/UITableView-Bottom-Refresh per un'illustrazione semplicistica. – Rob

+1

questa dovrebbe essere la risposta accettata –