2015-07-02 1 views
0

Я пытаюсь добавить новый UICollectionViewCell в моем UICollectionView но ничего не обновляется: У меня есть ViewController, в котором я обновить DataArray для источника данных моего UICollectionView:InsertItemsAtIndexPaths ничего не обновлять в UICollectionView

//update data before insert 
    [(NSMutableArray *)_previousVC.projectsView.carousel.projectsData addObject:paramsRequest]; 
    _previousVC.hasBeenUpdatedFromProjectView = YES; 
    [self.navigationController popViewControllerAnimated:YES];} 

Объект хорошо добавлен в мой dataArray.

После внезапная ViewController в предыдущем ViewController я использую метод viewDidAppear анимировать ячейку, которая будет вставить:

- (void) viewDidAppear:(BOOL)animated{ 
    [super viewDidAppear:YES]; 
    if(_hasBeenUpdatedFromProjectView == YES){ 
     NSInteger rowsAmount = [self.projectsView.carousel numberOfItemsInSection:0] -1; 
     NSIndexPath * indexPath = [NSIndexPath indexPathForRow:rowsAmount inSection:0]; 
     NSArray * indexPathArray = [[NSArray alloc] initWithObjects:indexPath, nil]; 
     [self.projectsView.carousel insertItemsAtIndexPaths: indexPathArray]; 
    } 
} 

Но когда появляется ViewController, мой UICollectionView не был обновлен. Есть идеи ?

+0

Просто загрузите коллекцию. –

+0

В основном индекс, в который вы вставили объект данных, должен соответствовать параметру indexPath, который вы используете в вызове 'insertItemsAtIndexPaths'. – Petar

+0

Этот метод должен автоматически вызвать метод перезагрузки. –

ответ

0

Сначала вы должны быть уверены, что проверьте indexPath правильно. И запустите его в основной теме.

dispatch_async(dispatch_get_main_queue(), ^{ 
     [self.tableView beginUpdates]; 
     [self.tableView insertRowsAtIndexPaths:indexPathArray]; 
     [self.tableView endUpdates]; 
}); 

Надеюсь, это могло бы помочь.

+0

'viewDidAppear' выполняется в основном потоке - не нужно делать асинхронный вызов здесь – Petar

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