У меня есть функция, которая обновляет существующий UICollectionView. UICollectionView создан, я его вижу, но когда я хочу получить доступ к его ячейкам для обновления, они равны нулю.
-(void)finishExam{
for (int i = 0; i < [self.questionsOverviewCollection numberOfItemsInSection:0]; i++) {
NSLog(@"self.questionsOverviewCollection - %@",self.questionsOverviewCollection);
NSLog(@"cell - %@",[self.questionsOverviewCollection cellForItemAtIndexPath:[NSIndexPath indexPathForRow:i inSection:0]]);
NSLog(@"overviewCell - %@",(OverviewCell*)[self.questionsOverviewCollection cellForItemAtIndexPath:[NSIndexPath indexPathForRow:i inSection:0]]);
NSLog(@"numOfCells - %d", [self.questionsOverviewCollection numberOfItemsInSection:0]);
OverviewCell *cell = (OverviewCell*)[self.questionsOverviewCollection cellForItemAtIndexPath:[NSIndexPath indexPathForRow:i inSection:0]];
[cell finishExam];
}
}
- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath{
OverviewCell *cell = (OverviewCell*)[collectionView dequeueReusableCellWithReuseIdentifier:identifier forIndexPath:indexPath];
[cell someSetUp];
return cell;
}
Журнал:
self.questionsOverviewCollection - <UICollectionView: 0xa1abc00; frame = (14 219; 217 441); clipsToBounds = YES; opaque = NO; autoresize = W+H; gestureRecognizers = <NSArray: 0xe0617a0>; layer = <CALayer: 0xe0bbb00>; contentOffset: {0, 0}> collection view layout: <UICollectionViewFlowLayout: 0xe0cc3f0>
cell - (null)
overviewCell - (null)
numOfCells - 30
2 ответа
Из Документы UICollectionView (выделено мной)
Возвращаемое значение
Объект ячейки по соответствующему пути индекса или nil, если ячейка не отображается или indexPath вне допустимого диапазона.
Вы должны обновить свою базовую модель, которая предоставляет данные представлениям.
cellForItemAtIndexPath
все время возвращает nil
!
Попробуй это:
[collectionView reloadData];
[collectionView layoutIfNeeded];
Похожие вопросы
Связанные вопросы
Новые вопросы
ios
iOS - мобильная операционная система, работающая на Apple iPhone, iPod touch и iPad. Используйте этот тег [ios] для вопросов, связанных с программированием на платформе iOS. Используйте связанные теги [target-c] и [swift] для проблем, характерных для этих языков программирования.
[cell finishExam]
непосредственно в вашей модели данных, а не проксировать черезcollectionView
. Смотрите мой комментарий к ответу Пола С. В большинстве случаев вы должны иметь возможность получить информацию о макете ячейки из свойстваcollectionViewLayout
, а специфичные для модели функции, такие как- finishExam
, должны быть доступны в вашей модели или настроены, когда ячейка исключена из очереди.