uicollectionview重新加载后无法获取单元格

时间:2014-11-20 12:02:05

标签: ios reload collectionview

我使用集合视图创建了一个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];

1 个答案:

答案 0 :(得分:1)

我通过以下方式解决了这个问题:

   [self.collectionView reloadData];
   [self.collectionView layoutIfNeeded];

感谢Lukewar的回复 Reloading a UICollectionView using reloadData method returns immediately before reloading data