2013-09-23 19 views
6

Ho sviluppato un'applicazione di lettura RSS utilizzando le viste di raccolta. Il mio problema è che, al momento del primo avvio, l'app viene visualizzata vuota.Come ricaricare automaticamente una vista raccolta?

Il processo è, il feed RSS viene estratto dal Web, archiviato in un file temporaneo sul dispositivo e quindi visualizzato tramite le viste di raccolta.

La mia domanda è Come faccio a caricare l'app per ricaricare automaticamente i dati una volta caricati i file? In modo che l'utente non veda una schermata vuota iniziale.

Ho provato ad aggiungere questo codice

 [self.collection1 performBatchUpdates:^{ 
     [self.collection1 reloadSections:[NSIndexSet indexSetWithIndex:0]]; 
    } completion:nil]; 

Tuttavia non funziona per la vista iniziale.

Devo fare qualcosa dall'appdelegate? o dal controller della vista collezione stesso?

prega di avvisare

Di seguito si riporta il codice utilizzato per ottenere e visualizzare i miei dati ....

#pragma mark - UICollectionViewDataSourceDelegate 
- (NSInteger) numberOfSectionsInCollectionView:(UICollectionView *)collectionView 
    { 
    return 1; 
    } 

- (NSInteger) collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section 
{ 
return [_articleListmain count]; 
} 

- (UICollectionViewCell *) collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath 
{ 
MainCollectionViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"articleCellmain" 
                      forIndexPath:indexPath]; 
NSDictionary *item = [_articleListmain objectAtIndex:indexPath.item]; 

// set the article image 
[cell.image setImageWithURL:[item objectForKey:@"image"]]; 

// set the text of title UILabel 
cell.title.text = [NSString stringWithFormat:@"%@\n\n\n\n", [item objectForKey:@"title"]]; 
cell.title.textColor = [UIColor colorWithRed:33.0f/255.0f green:74.0f/255.0f blue:146.0f/255.0f alpha:1.0f]; 

// set the text of summary UILabel 
cell.description.text = [NSString stringWithFormat:@"%@\n\n\n\n\n\n\n\n\n", [item objectForKey:@"description"]]; 


cell.targetURL.text = [NSString stringWithFormat:@"%@\n\n\n\n", [item objectForKey:@"link"]]; 

cell.category.text = [NSString stringWithFormat:@"%@\n\n\n\n", [item objectForKey:@"category"]]; 

cell.date.text = [NSString stringWithFormat:@"%@\n\n\n\n", [item objectForKey:@"pubDate"]]; 

cell.image.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"placement.png"]]; 


return cell; 


} 

risposta

8

si dovrebbe essere in grado di utilizzare [CollectionView reloadData] una volta si conosce il download è completato.

+0

così come lo uso nel controller della vista raccolta o dopo aver terminato l'analisi dei dati. Questo è il problema che sto avendo. –

+0

Ho provato che nella mia vista insieme e il registro mostra che si ricarica ma non visualizza cambia la visualizzazione vuota –

+0

Senza vedere il codice, non so davvero cosa causerebbe questo oltre ai dati non presenti al momento della ricaricare. Nel tuo cellForItemAtIndexPath, hai ispezionato la tua origine dati (qualunque essa sia) per vedere che i tuoi dati sono lì? Forse vorresti modificare il tuo post per includere il codice per quel metodo. – RegularExpression

1
[self.collection1 performBatchUpdates:^{ 
[self.collection1 reloadSections:[NSIndexSet indexSetWithIndex:0]]; 
} completion:nil]; 

provare a sostituire questo codice con il codice qui sotto

[self.collection1 performBatchUpdates:^{ 
[self.collection1 reloadData]; 
} completion:nil]; 
0

Penso che hai appena messo [self.collection1 reloadData] nel viewWillAppear della ViewController dove si trova la visualizzazione collezione.

O

È possibile reloadData da qualche parte, anche prima che appaia la vista, come subito dopo l'analisi solo accertarsi di aver inizializzato la vista dove la vista di raccolta si trova prima di ricaricare.

3

provare questo

[self.collection1 performBatchUpdates:^{ 
    [collectionView reloadData] 
} completion:nil]; 

una volta che il download è completato.