如何保存 UICollectionViewCell 的状态

Posted

技术标签:

【中文标题】如何保存 UICollectionViewCell 的状态【英文标题】:How to save state of UICollectionViewCell 【发布时间】:2012-11-17 14:14:03 【问题描述】:

请帮助我,如何保存UICollectionViewCell 的状态。例如:我有带有UIWebView 的单元格,当我dequeueReusableCellWithReuseIdentifier:forIndexPath: 返回错误的单元格时,不是这个indexPath 和之后UIWebView 内容将重新加载正确的indexPath 抽搐。谢谢!

- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath 
    NewsCollectionViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"NEWS_CELL" forIndexPath:indexPath];

    if (!cell.isShowed)   // I just added boolean property
        cell.isShowed = YES;

        /*** some init actions ***/
    

    return cell;

如果我使用这种方法,带有cell.isShowed == YES 的单元格会返回错误的indexPath。但是如果我不使用cell.isShowed UIWebView 的内容将在每个显示单元格中重新加载 对不起我的英语:)

【问题讨论】:

你使用了正确的 indexPath 吗? 是的,我只使用 indexPath 从 - (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath “不适合这个 indexPath”是什么意思?你能粘贴你的代码吗?我需要更多代码来看看你有什么问题。 "return on wrong indexPath" 表示单元格显示成功但行错了? 那么,sunkehappy,您对此有什么想法吗? :) 【参考方案1】:

看看 Apple 的 UIWebView Class Reference 怎么说:

重要提示:您不应将 UIWebView 或 UITableView 对象嵌入 UIScrollView 对象。如果这样做,可能会导致意外行为 因为两个对象的触摸事件可能会混淆和错误 处理。

但是UICollectionView 继承自UIScrollView。所以你需要重新设计你的架构。

【讨论】:

webView.scrollView.scrollEnabled = NO; ?

以上是关于如何保存 UICollectionViewCell 的状态的主要内容,如果未能解决你的问题,请参考以下文章

保存 UICollectionViewCell 进度状态

从 UICollectionViewCell 访问保存在 UIViewController 中的变量?

使用 UICollectionViewCell 内的 Textfield 更新标签

如何设置 UICollectionViewCell 的位置?

如何在 UICollectionViewCell 上设置 UILabel?

如何使文本字段与 UICollectionViewCell 一样大?