При использовании моего подкласса UICollectionViewLayout
cellForItemAtIndexPath:
не вызывается (я проверил с использованием точек останова и вывода отладки). Это, как я использовать пользовательский макет:cellForItemAtIndexPath: не вызывается при использовании пользовательского подкласса UICollectionViewLayout
- (void)viewDidLoad
{
[super viewDidLoad];
DMSGridLayout* gridLayout = [[DMSGridLayout alloc] init];
// UICollectionViewFlowLayout* flow = [[UICollectionViewFlowLayout alloc] init];
// [flow setItemSize:CGSizeMake(150, 150)];
UICollectionView *collection = [[UICollectionView alloc] initWithFrame:self.view.bounds collectionViewLayout:gridLayout];
collection.delegate = self;
collection.dataSource = self;
self.collectionView = collection;
[self.view addSubview:self.collectionView];
[self.collectionView registerClass:[DMSGridCell class] forCellWithReuseIdentifier:@"CollectionCell"];
}
Но когда я изменить код выше, чтобы использовать UICollectionViewFlowLayout
вместо моего пользовательского подкласса cellForItemAtIndexPath:
называется.
Может быть, какой-то код из моего подкласса подстандартного макета предотвращает вызов cellForItemAtIndexPath
?
Да, может. Вам нужно будет показать некоторые из них - если макет не возвращает какой-либо размер для вида коллекции, например, или любого размера для объектов макета, то ячейка никогда не будет создана. Внедрили ли вы все методы, описанные в документации? – jrturton
Большое спасибо. Я испортил начало кадра ячейки ... он был вне видимой области. Поэтому было правильно, что 'cellForItemAtIndexPath' не вызывался. – flather
Хорошо, я поставил свой комментарий в качестве ответа, чтобы вы могли закрыть это. – jrturton