UIViewController поддерживает ссылку на UICollectionView. Контроллер должен изменить встроенный макет потока с помощью UICollectionViewDelegateFlowLayout.
Довольно просто установить источник данных представления на себя:
MyViewController.m
- (void)viewDidLoad
{
self.collectionView.dataSource = self;
}
Но как мне настроить контроллер в качестве макета потока делегатов представления?
- (void)viewDidLoad
{
self.collectionView.dataSource= self;
// self.collectionView.??? = self;
}
Я пробовал:
- (void)viewDidLoad
{
self.collectionView.dataSource= self;
self.collectionView.collectionViewLayout = self;
}
Но получаю ошибку: «Присваивание несовместимых типов указателей ...».
Заголовочный файл коллекции выглядит так:
MyViewController.h
@interface MyViewController : UIViewController <UICollectionViewDataSource, UICollectionViewDelegateFlowLayout>
источник
self.collectionViewLayout = UICollectionViewFlowLayout()
,self.collectionViewLayout = [[UICollectionViewFlowLayout alloc]init]
Согласно предыдущему ответу - это просто пример использования. Это действительно непонятно, но я могу показать, как это работает:
источник
Мои два цента за macOS Mojave - Swift
(Я попал сюда в поисках
NSCollectionView
... Я знаю, что вопрос был оUICollectionView
..)Все сказанное выше (указание делегата также подразумевает размер ячейки) верно и для macOS.
ПРИМЕЧАНИЕ : Если вы напишете:
метод:
будет называться.
В случае удаления метод делегата не вызывается. (поскольку класс не подчиняется протоколу).
источник