我有故事板,使用UICollectionView查看,带插座的视图控制器。记录使用Web服务加载:
[[API sharedInstance] getCommentsForArticle:[self.article[@"id"] integerValue] withPage:self.commentsPage onSuccess:^(NSArray *responseData) {
NSLog(@"LoadCommentsThread: %@", [NSThread currentThread]);
[self.allCommentsCache addObjectsFromArray:responseData];
[self.allCommentsCollectionView reloadData];
} onFail:^(NSError *error) {
DLog(@"Handle error");
}];
每个collectionview请求的项目数都是正确的:
- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section
项目的大小是正确计算的,甚至为每个单元格尝试了不变的大小:
if (collectionView == self.allCommentsCollectionView) {
NSString *commentText = self.allCommentsCache[indexPath.row][@"text"];
CGSize maximumLabelSize = CGSizeMake(300,9999);
CGSize expectedLabelSize = [commentText sizeWithFont:[UIFont fontWithName:@"HelveticaNeue" size:15.0f]
constrainedToSize:maximumLabelSize
lineBreakMode:NSLineBreakByWordWrapping];
return CGSizeMake(320, 150);
}
问题在于:
- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath
在初始运行时,数据源阵列上有30个元素,并且它已正确加载。当加载更多时,numberofitems返回正确的项目数,sizeforitem会遍历所有项目,但cellforitem仅适用于最初的30项。无论是否有100件,200件以上的物品。
有类似问题的人吗?