UIViewController utrzymuje odwołanie do UICollectionView. Kontroler powinien zmodyfikować wbudowany układ przepływu przy użyciu UICollectionViewDelegateFlowLayout.
Ustawienie źródła danych widoku na siebie jest dość łatwe:
MyViewController.m
- (void)viewDidLoad
{
self.collectionView.dataSource = self;
}
Ale jak ustawić kontroler jako układ przepływu delegatów widoku?
- (void)viewDidLoad
{
self.collectionView.dataSource= self;
// self.collectionView.??? = self;
}
Próbowałem:
- (void)viewDidLoad
{
self.collectionView.dataSource= self;
self.collectionView.collectionViewLayout = self;
}
Ale pojawia się błąd: „Przypisywanie niezgodnych typów wskaźników ...”.
Plik nagłówkowy kolekcji wygląda następująco:
MyViewController.h
@interface MyViewController : UIViewController <UICollectionViewDataSource, UICollectionViewDelegateFlowLayout>
źródło
self.collectionViewLayout = UICollectionViewFlowLayout()
,self.collectionViewLayout = [[UICollectionViewFlowLayout alloc]init]
Zgodnie z poprzednią odpowiedzią tylko przykład użycia. To naprawdę nie jest jasne, ale mogę pokazać, jak to działa:
źródło
Moje dwa centy za macOS Mojave - Swift
(Spadłem tutaj, szukając
NSCollectionView
... Wiem, że pytanie dotyczyłoUICollectionView
...)Wszystko powyższe (określenie delegata oznacza również rozmiar komórki) jest poprawne również dla systemu MacOS.
UWAGA : Jeśli napiszesz:
metoda:
zostanie wezwany.
Jeśli zostanie usunięty, żadna metoda delegata nie zostanie wywołana. (ponieważ klasa nie przestrzega protokołu).
źródło