【问题标题】:reuse cell in three20重复使用三个单元格20
【发布时间】:2011-07-25 05:55:50
【问题描述】:

在我的- (void)setObject:(id)object 方法中,有时我会根据对象向单元格动态添加 0..10 UIImageView。现在的问题是如何从 prepareForReuse 的单元格中删除这些 UIImageView?

我尝试过一种愚蠢的方法,即将每个 UIImageView 从 -1 标记到 -10,然后在我的 prepareForReuse 中检查它是否存在,如果存在,我将其删除,然后检查下一个。还有比这更简单的方法吗?

【问题讨论】:

    标签: iphone objective-c ipad three20


    【解决方案1】:

    您应该使每个单元格包含要在其自己的子类中显示的每个图像视图的点。当您在子类中实现prepareForReuse 时,将它们全部设置为隐藏,并在您的setObject 调用中确定哪些需要取消隐藏。

    【讨论】:

    • 问题是我事先不知道我将拥有多少个 imageview,这个数字是随机的。我知道我在帖子中说过它是 0..10,但它可以更多超过 10,因为这是从 API 中提取数据,所以我不知道会有多少期望
    • 也许如果你能澄清“你想在自己的子类中显示的每个图像视图”的意思,这对我来说会更有意义
    • 图像视图包含在单元格的子类中。您在这里只有两个选择:1)根据需要在滚动时创建图像视图(慢)或在单元格中预先创建图像视图并仅在滚动时显示/隐藏它们(快速,使用更多内存)。相反,我会寻找设计更改,因为单个单元格中的 10 多个图像项是糟糕的 UI
    • 在setObject中创建图像怎么样?这就是你在第二个选项中的意思吗?当您的意思是预先创建 imageViews 时,您的意思是创建 TTImageView 对吗?
    • 在 setObject 中创建图像是第一个选项。您不应该在滚动期间进行太多登录,否则在真实设备上您会看到性能下降。是的,你的第二个问题。
    【解决方案2】:

    试试这个

    - (void)prepareForReuse {
        [super prepareForReuse];
        [_photoImage unsetImage];   
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-01-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-11-10
      • 1970-01-01
      • 2012-08-04
      相关资源
      最近更新 更多