Um UIViewController mantém uma referência a um UICollectionView. O controlador deve modificar o layout de fluxo integrado usando o UICollectionViewDelegateFlowLayout.
É muito fácil definir a fonte de dados da visualização como self:
MyViewController.m
- (void)viewDidLoad
{
self.collectionView.dataSource = self;
}
Mas como defino o controlador para ser o layout de fluxo de delegado da visualização?
- (void)viewDidLoad
{
self.collectionView.dataSource= self;
// self.collectionView.??? = self;
}
Eu tentei:
- (void)viewDidLoad
{
self.collectionView.dataSource= self;
self.collectionView.collectionViewLayout = self;
}
Mas recebo o erro: "Tipos de ponteiro incompatíveis atribuindo ...".
O arquivo de cabeçalho da coleção tem a seguinte aparência:
MyViewController.h
@interface MyViewController : UIViewController <UICollectionViewDataSource, UICollectionViewDelegateFlowLayout>
fonte
self.collectionViewLayout = UICollectionViewFlowLayout()
,self.collectionViewLayout = [[UICollectionViewFlowLayout alloc]init]
De acordo com a resposta anterior apenas exemplo de uso. Realmente não está claro, mas posso mostrar como funciona:
fonte
Meus dois centavos para macOS Mojave - Swift
(Eu caí aqui procurando por
NSCollectionView
... eu sei que a pergunta era sobreUICollectionView
..)Tudo o que foi dito acima (especificar delegado implica também no tamanho da célula) também está correto para o macOS.
NOTA : Se você escrever:
o método:
será chamado.
Se removido, nenhum método delegado será chamado. (pois a classe não obedece ao protocolo).
fonte