这只是我第二次使用 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 - 如何将 NSString 转换为 std::string?
objective-c - 以编程方式在 UINavigationController 中设置 UI