2013-09-23 16 views
6

Ich habe eine RSS-Reader-Anwendung mit Collection-Ansichten entwickelt. Mein Problem ist, dass die App beim ersten Start leer ist.Wie lade ich eine Sammlungsansicht automatisch neu?

Der Prozess ist, der RSS-Feed wird aus dem Internet gezogen, in einer temporären Datei auf dem Gerät gespeichert und dann über Sammlungsansichten angezeigt.

Meine Frage ist Wie bekomme ich die App die Daten automatisch neu zu laden, sobald die Dateien geladen wurden? Damit der Benutzer keinen ersten leeren Bildschirm sieht.

Ich habe versucht, diesen Code hinzufügen

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

jedoch nicht für die Startansicht funktioniert.

Sollte ich etwas aus dem Appdelegate tun? oder aus dem Sammlungsansicht-Controller selbst?

Bitte geben

Im Folgenden wird der Code verwendet, um meine Daten zu erhalten und anzuzeigen ....

#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; 


} 

Antwort

8

Sie sollten [Collectionreload] verwenden können, wenn Sie den Download wissen abgeschlossen hat.

+0

also verwende ich das in der Sammlung View-Controller oder nachdem ich die Analyse der Daten abgeschlossen habe. Das ist das Problem, das ich habe. –

+0

Versucht, dass in meiner Sammlung Ansicht und das Protokoll zeigt, dass es neu lädt, aber die leere Anzeige nicht ändern –

+0

Ohne den Code zu sehen, ich weiß wirklich nicht, was würde dies dazu führen, dass die Daten nicht zur Zeit der neu laden. Haben Sie in Ihrem cellForItemAtIndexPath Ihre Datenquelle überprüft (was immer es auch sein mag), um zu sehen, dass Ihre Daten da sind? Vielleicht möchten Sie Ihren Beitrag so modifizieren, dass er den Code für diese Methode enthält. – RegularExpression

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

Versuchen diesen Code zu ersetzen, mit folgendem Code

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

Ich glaube, Sie setzen nur [self.collection1 reload] im viewWillAppear des Viewcontroller, wo Ihre Sammlung Ansicht platziert wird.

ODER

Sie können es irgendwo reload noch bevor der Ansicht angezeigt wird, wie unmittelbar nach nur sicherstellen, dass das Parsen Sie die Ansicht initialisiert haben, wo die Sammlung Ansicht vor Neuladen befindet.

3

versuchen, diese

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

einmal der Download abgeschlossen ist.

Verwandte Themen