如何重新加载UICollectionView的数据部分?

时间:2013-01-26 18:45:26

标签: ios objective-c ios6 uicollectionview

我正在尝试重新加载UICollectionView的数据部分,而不是页眉或页脚(补充视图)。

当我使用reloadData方法时,页眉和页脚部分也会重新加载,这就是我想要的。

我找到了方法reloadSections:,但我不知道为什么它不起作用。

因为我的集合视图只包含一个部分,所以我尝试使用这样的方法:

[collectionViewController.collectionView reloadSections:[NSIndexSet indexSetWithIndex:0]];

但是调用方法时会出现运行时错误。错误的内容是:

'NSInvalidArgumentException', reason: '-[UICollectionViewUpdateItem action]:
unrecognized selector sent to instance 0x90aec00'

方法reloadSections:是否不允许这样使用?有没有其他方法可以重新加载数据部分,而不是页眉或页脚部分?

1 个答案:

答案 0 :(得分:6)

我认为错误只发生在搜索栏是集合视图的子视图时,并且在键盘输入结束时尝试调用reloadSections:

This article给出了类似问题的答案,但这对我不起作用。

所以我使用了另一种方法来调用几乎相同的功能。

我没有将标题作为补充视图添加,而是将标题作为“视图”的子视图。 (不是collectionView)

并添加了一些滚动委托来模仿表格视图的标题。

- (void)scrollViewDidScroll:(UIScrollView *)scrollView
{
    CGFloat y = scrollView.contentOffset.y;
    if (y < 44) {
        [self.searchBar setFrame:CGRectMake(0, -y, 320, 44)];
        [self.searchBar setHidden:NO];
    } else if (y >= 44) {
        [self.searchBar setHidden:YES];
    }  
}