2013-09-23 3 views
6

Я разработал приложение для чтения RSS, используя коллекции. Моя проблема заключается в том, что при первом запуске приложение становится пустым.Как я могу автоматически загружать коллекцию?

Процесс заключается в том, что RSS-канал вытаскивается из Интернета, сохраняется во временном файле на устройстве, а затем отображается через коллекции.

Мой вопрос: Как получить приложение для автоматической перезагрузки данных после загрузки файлов? Так что пользователь не видит начальный пустой экран.

Я попытался добавить этот код

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

Однако это не работает для первоначального вида.

Должен ли я что-то делать с appdelegate? или из самого контроллера представления коллекции?

Пожалуйста посоветуйте

Ниже приведен код, используемый для получения и отображения мои данные ....

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


} 

ответ

8

Вы должны быть в состоянии использовать [CollectionView reloadData], как только вы знаете, что загрузка завершена.

+0

так что я использую это в контроллере просмотра коллекции или после того, как закончил анализ данных. У меня проблема. –

+0

Пробовал, что в моем представлении коллекции, и журнал показывает, что он перезагружается, но не отображает изменение пустого дисплея –

+0

Не видя кода, я действительно не знаю, что могло бы привести к этому, кроме данных, которые не присутствуют во время перезагрузить. В вашем cellForItemAtIndexPath вы проверили свой источник данных (что бы это ни было), чтобы увидеть, что ваши данные есть? Возможно, вы захотите изменить свой пост, чтобы включить код для этого метода. – RegularExpression

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

Попробуйте заменить этот код ниже код

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

Я думаю, вы просто положить [self.collection1 reloadData] в viewWillAppear в ViewController, где находится ваш вид коллекции.

ИЛИ

Вы можете reloadData его где-то еще до появления вида, как сразу же после разбора просто убедитесь, что вы настроите вид, где вид коллекции находится перед загрузкой.

3

попробовать этот

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

как только ваша загрузка завершена.

Смежные вопросы