ios - 在ios中但不是 iOS6: cellForItemAtIndexPath

  显示原文与译文双语对照的内容

当最近添加带有自定义 UICollectionViewFlowLayout 子类的UICollectionView 时, collectionView:cellForItemAtIndexPath: 方法仅在ios上调用 ,而不是在iOS6上。 换句话说,在are中所有的工作都很好,但我的自定义集成项目没有显示在sdl中。 有趣的是,单元格似乎有( collectionView滚动),但所有条目都是空白的,白色背景。

in在. xib 文件中设置,数据源和委托被附加,UICollectionViewDataSource和UICollectionViewDelegateFlowLayout在视图控制器. h 文件的@interface 调用中添加。

在自定义流布局初始化中,全部集合的项目大小。部分插入。行间距和间隔间距都被设置。

一些代码:


- (void)viewDidLoad
{
 [super viewDidLoad];

 self.collectionView.collectionViewLayout = [[TFSpringFlowLayout alloc] init];
 [self.collectionView registerClass:[TFWorkoutCell class] forCellWithReuseIdentifier:CellIdentifier];
}

-(NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section
{
//This method is returning a value> 0
 return _workouts.count;
}

- (NSInteger)numberOfSectionsInCollectionView:(UICollectionView *)collectionView
{
 return 1;
}

-(UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath 
{
//This is being called on iOS7, but is never being called on iOS6
. . .removed for clarity
 return cell;
}

收费:问题解决。我的定制流程包括一些使用新类的iOS7-specific替代。 这些没有造成一个崩溃,但是防止细胞被在dtmf中绘制。

时间: 作者:

以下是我的问题,以防它的他人在未来遇到这个问题。

自定义UICollectionViewFlowLayout包含多种方法替代,以实现 ios UIKit Dynamics 。 这些不会导致应用程序崩溃,但是防止了单元格中的单元格被绘制。

以下是错误的代码:


-(NSArray *)layoutAttributesForElementsInRect:(CGRect)rect {
 return [self.dynamicAnimator itemsInRect:rect];
}

-(UICollectionViewLayoutAttributes *)layoutAttributesForItemAtIndexPath:(NSIndexPath *)indexPath {
 return [self.dynamicAnimator layoutAttributesForCellAtIndexPath:indexPath];
}

修复所需的简单更改:


-(NSArray *)layoutAttributesForElementsInRect:(CGRect)rect {
 if ([UIDynamicAnimator class])
 return [self.dynamicAnimator itemsInRect:rect];
 else
 return [super layoutAttributesForElementsInRect:rect];
}

-(UICollectionViewLayoutAttributes *)layoutAttributesForItemAtIndexPath:(NSIndexPath *)indexPath {
 if ([UIDynamicAnimator class])
 return [self.dynamicAnimator layoutAttributesForCellAtIndexPath:indexPath];
 else
 return [super layoutAttributesForItemAtIndexPath:indexPath];
}

添加 if/else 语句来检查iOS6或者 ios,只返回适当的响应修复了这个问题。 希望这对其他人有帮助 !

作者:
...