ios - UICollectionView 的 cellForItemAtIndexPath 没有

这只是我第二次使用 UICollectionView,也许我已经咬得比我能咀嚼的多,但是:

我正在实现一个 UICollectionView (myCollectionView),它使用我已经子类化的自定义 UICollectionViewCell。子类单元格 (FullReceiptCell) 包含 UITableView,并且是 viewcontroller 的大小。我正在尝试允许在 FullReceiptCells 之间进行水平滚动。

包含 myCollectionView 的子类 UICollectionViewController 被推送到导航 Controller 堆栈。目前,myCollectionView loas 和水平滚动已启用。但是,看不到任何单元格。我已经确认了

- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section

已运行并返回大于 0 的整数。我还确认 myCollectionView 的委托(delegate)和数据源已在 IB 中正确设置为子类 UICollectionViewController。

要加载单元格的方法:

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

没有被调用。

这是我在该 Controller 中推送 UICollectionViewController 和 viewDidLoad 方法的地方(注意:initWithBill 是普通初始化程序的替代):

在之前的 ViewControllers .m 文件中:

FullReceiptViewController *test = [[FullReceiptViewController alloc] initWithBill:currentBill];
test.title = @"Review";
[self.navigationController pushViewController:test animated:YES];

在 FullReceiptViewController.m 中:

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view from its nib.
    [self.myCollectionView registerClass:[FullReceiptCell class] forCellWithReuseIdentifier:@"FullReceiptCellIdentifier"];
    self.myCollectionView.pagingEnabled = YES;
    // Setup flowlayout

    self.myCollectionViewFlowLayout = [[UICollectionViewFlowLayout alloc] init];
    [self.myCollectionViewFlowLayout setItemSize:CGSizeMake(320, 548)];
    [self.myCollectionViewFlowLayout setSectionInset:UIEdgeInsetsMake(0, 0, 0, 0)];
    [self.myCollectionViewFlowLayout setScrollDirection:UICollectionViewScrollDirectionHorizontal];
    self.myCollectionViewFlowLayout.minimumLineSpacing = 0;
    self.myCollectionViewFlowLayout.minimumInteritemSpacing = 0;
    [self.myCollectionView setCollectionViewLayout:myCollectionViewFlowLayout];
    //testing to see if the collection view is loading
    self.myCollectionView.backgroundColor = [UIColor colorWithWhite:0.25f alpha:1.0f];

关于为什么它没有被调用的任何线索?

最佳答案

对于那些后来在这里绊倒的人......原因:

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

没有被调用是因为collectionViewFlowLayout的itemSize的高度太大。

[self.myCollectionViewFlowLayout setItemSize:CGSizeMake(320, 548)];

如果我将高度改为 410,它将执行 cellForItemAtIndexPath。

关于ios - UICollectionView 的 cellForItemAtIndexPath 没有被调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14668781/

相关文章:

ios - NSDictionary - 需要检查字典是否包含键值对

objective-c - 有没有办法强制在 NSArray、NSMutableArray 等上输入

iphone - Objective-C 将十六进制字符串解析为整数

ios - 如何删除 UIWebView 的所有 cookie?

objective-c - BOOL 的默认值

objective-c - 如何将 NSString 转换为 std::string?

objective-c - 以编程方式在 UINavigationController 中设置 UI

objective-c - 从 NSSet 中获取对象

objective-c - 如何摆脱 Xcode 中的 "unused variable"警告?

ios - 以编程方式访问 Assets 目录