target- c Embedded UICollectionViewController показывает 0 элементов - PullRequest
0 голосов
/ 06 января 2020

Я пытаюсь иметь UICollectionViewController внутри моего UIViewController. Вот как я это настроил

TagsCollectionViewController* tagsCollectionViewController = [[TagsCollectionViewController alloc] initWithCollectionViewLayout:[UICollectionViewLayout new]];
    UIView *tagsView = tagsCollectionViewController.view;
    [self.view addSubview:tagsView]; // setting up constraings too

И это мой TagsCollectionViewController

@interface TagsCollectionViewController () <UICollectionViewDelegateFlowLayout>

@end

@implementation TagsCollectionViewController

static NSString * const reuseIdentifier = @"Cell";

- (void)viewDidLoad {
    [super viewDidLoad];

    self.collectionView.backgroundColor = [UIColor yellowColor];

    [self.collectionView registerClass:[UICollectionViewCell class] forCellWithReuseIdentifier:reuseIdentifier];

}

#pragma mark <UICollectionViewDataSource>

- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section {
    return 20;
}

- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath {

    UICollectionViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:reuseIdentifier forIndexPath:indexPath];
    cell.backgroundColor = [UIColor redColor];
    return cell;

}

#pragma mark <UICollectionViewDelegateFlowLayout>

- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath {
    return  CGSizeMake(50, 50);
}

@end

Что странно, это то, что я получаю желтый вид, так что моя коллекция, кажется, работает, однако я не не видеть никаких предметов. Но когда я представляю весь контроллер все работает нормально. Так что проблема возникает только тогда, когда я пытаюсь ее встроить. В чем может быть проблема?

РЕДАКТИРОВАТЬ: Связано: Добавление UICollectionViewController в UIViewController не работает

1 Ответ

0 голосов
/ 06 января 2020

Похоже, что это проблема с оценкой размера предметов в коллекции. Я смог получить результаты, используя следующий код после создания аналогичного примера и заметив, что ячейки не запрашиваются.

@interface ViewController ()
@property (nonatomic, strong) TagsCollectionViewController *tags;
@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    UICollectionViewFlowLayout *layout = [UICollectionViewFlowLayout new];
    layout.itemSize = CGSizeMake(50.0, 50.0);
    self.tags = [[TagsCollectionViewController alloc] initWithCollectionViewLayout:layout];
    UIView *tagsView = self.tags.view;
    [self.view addSubview:tagsView];
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...