我使用集合视图创建了一个Excel视图。之前我在滚动列出的集合视图时遇到了一个问题: https://stackoverflow.com/questions/27036224/scrolling-disturbs-layout-of-collectionview 我在看到Shivam的回复之后解决了这个问题: Collection View,with custom layouts, cells misbehave on scrolling
-(UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath{
NSString *cellID = [NSString stringWithFormat:@"%@%d", @"cCell",indexPath.row];
[myCollectionView registerClass: [CustomCell class] forCellWithReuseIdentifier:cellID];
CustomCell *cell = [self.collectionView dequeueReusableCellWithReuseIdentifier:cellID forIndexPath:indexPath];
[self configureCell:cell forIndexPath:indexPath];
return cell;
}
-(void)configureCell:(CustomCell*)cell forIndexPath:(NSIndexPath*)indexPath{
// configuration code
}
我不知道它是否正确,但是它正在工作。但是现在我陷入了与重新加载集合视图相关的另一个问题。
问题::: 我在单元格中有textfield,我已经实现了textFieldDidEndEditing委托。我还提供了Next Button,它根据我的需要为集合视图中的所有单元格提供代理导航。在下一个按钮的单击方法中,我保存currentIndexpath,重新加载集合视图,使用保存的索引路径获取下一个单元格,获取文本字段并将其作为第一响应者。但是下一个文本域永远不会成为第一响应者。我调试了这个问题,发现重新加载后我无法检索到单元格。如果我删除重装线,那么一切正常。
NSIndexPath *reqIndexPath = [NSIndexPath indexPathForItem:colId inSection:currentSection];
CustomCell *cell = (CustomCell*)[self.collectionView cellForItemAtIndexPath:reqIndexPath];
答案 0 :(得分:1)
我通过以下方式解决了这个问题:
[self.collectionView reloadData];
[self.collectionView layoutIfNeeded];
感谢Lukewar的回复 Reloading a UICollectionView using reloadData method returns immediately before reloading data