Как получить доступ к TVPosterView внутри UICollectionViewCell - PullRequest
0 голосов
/ 21 сентября 2019

Как обычно, я столкнулся с проблемой, которая не очень хорошо объяснена в Интернете, и документация Apple ограничена.

У меня есть UICollectionView с ячейками.Я хотел представить постер фильма внутри каждой ячейки. Я импортировал TVUIkit и добавил фреймворк в настройках проекта.

Мой FilmCelkaCollectionViewCell.h содержит

    API_AVAILABLE(tvos(12.0))
@interface FilmCelkaCollectionViewCell : UICollectionViewCell 
@property (strong, nonatomic) IBOutlet TVPosterView *widokPlakatu;

@end

FilmCelkaCollectionViewCell.m не содержит никаких методов.

И определение ячейки моего коллекционного контроллера выглядит следующим образом:

- (nonnull __kindof UICollectionViewCell *)collectionView:(nonnull UICollectionView *)collectionView cellForItemAtIndexPath:(nonnull NSIndexPath *)indexPath {
    UICollectionViewCell *celka = (FilmCelkaCollectionViewCell*)[collectionView dequeueReusableCellWithReuseIdentifier:@"filmCela" forIndexPath:indexPath];

    celka.backgroundColor =[UIColor greenColor];

    return celka;
}

Я добавил зеленый фон, чтобы увидеть лучшую область в симуляторе.Но проблема в том, что я не знаю, как получить доступ к свойству TVPosterView *widokPlakatu - единственное, к чему я могу получить доступ, это celka.contentView.Я смотрел видео WWDC2018 о «Что нового в tvos12» и у меня все еще есть вопросы:

  1. Работает ли TVPosterView как CollectionViewCell, и я могу использовать его с UICollectionView без ячеек?
  2. Является ли TVPosterView каким-то специальным @property, к которому нельзя получить доступ, и каким-то образом его нужно инициализировать?Я определил свойство в раскадровке.
  3. Запрещено ли размещать представления внутри CollectionViewCell?

1 Ответ

0 голосов
/ 21 сентября 2019

ОК Я нашел решение случайно.

Это

FilmCelkaCollectionViewCell *celka = [collectionView dequeueReusableCellWithReuseIdentifier:@"filmCela" forIndexPath:indexPath];

будет работать, в то время как приведение типов не будет

UICollectionViewCell *celka = (FilmCelkaCollectionViewCell *)[collectionView dequeueReusableCellWithReuseIdentifier:@"filmCela" forIndexPath:indexPath];
...