【发布时间】:2015-04-03 07:33:07
【问题描述】:
我在 UICollectionViewCell 中有一个 UIImageView(我们称它为 myImageView),它具有必要的约束。我正在使用故事板并将视图和代码与viewWithTag 链接起来。
在 cellForItemAtIndexPath 中,有一个条件,例如:
if (1 + 1 == 2)
myImageView.hidden = YES;
else
myImageView.hidden = NO
我已设置断点并验证代码已执行,但 myImageView 对于第一批可见单元格没有隐藏(假设所有单元格都满足条件)。 p>
当我向下滚动以显示新的(或重用的)单元格时,一切都按预期工作(满足条件并假定隐藏的单元格被隐藏,反之亦然)。当我向上滚动以再次显示第一批单元格时,它也可以正常工作。
问题仅在于第一批可见单元格。
我尝试过removeFromSuperview,而不是隐藏单元格,但在那里也没有运气。
在这种情况下使用自动布局和 UICollectionViews 时是否有适当的方法或最佳实践?
【问题讨论】:
-
第一次调用
cellForItemAtIndexPath之前条件是否为真?在第一个单元格已经显示并且您还没有调用 reloadData 之后,这听起来就像是真的 -
@Paulw11 我通过 API 检索数据。从 API 中检索到的是字典数组,隐藏该图像视图的条件在该字典中。从 API 成功检索数据后,我调用 reloadData。无论图像视图最初是否隐藏,它都应该根据 if else 条件相应地更新,因为我满足了这两种情况,对吗?
-
应该的。您使用视图标签而不是带有 IBOutlets 的自定义单元类是否有特殊原因?
-
@Paulw11 没有特别的原因。我尝试为此创建 UICollectionViewCell 的子类,但得到了相同的结果。无论哪种方式,代码在满足或不满足隐藏条件时仍会进入正确的隐藏或取消隐藏块。不过,我有一个观察结果,如果我在情节提要中检查 imageview 的隐藏框,会发生同样的事情,但相反;对于第一批隐藏单元格,应该显示的图像视图是隐藏的。
-
约束不应该与
.hidden有任何关系
标签: ios cocoa-touch autolayout uicollectionview uicollectionviewcell