我在CollectionView
中使用了TableViewCell
。一切正常,并按预期显示所有。但是,如果我快速滚动TableView
,则将一个集合中的项目(我在collectionView中使用图像)替换为另一个集合中的项目(图像),并在View上覆盖它(在代码al的Debug模式下可以正常工作),展示)。
UITableView GetCell():
public override UITableViewCell GetCell(UITableView tableView, NSIndexPath indexPath)
{
var item = _view.Items[indexPath.Row];
var cell = (MyTableCell)tableView.DequeueReusableCell(“cell”);
cell.TextLabelView.Text = item.Title;
cell.YesButtonView.Hidden = item.IsCategory;
cell.NoButtonView.Hidden = item.IsCategory;
if (item.IsImagePoint)
{
cell.ImagesCollectionView.DataSource = new ItemsDataSource(item.Images, cell.ImagesCollectionView);
cell.ImagesCollectionView.Delegate = new ItemsDelegate(item, _view);
}
return cell;
}
UICollectionView GetCell():
public override UICollectionViewCell GetCell(UICollectionView collectionView, NSIndexPath indexPath)
{
var cell = (ImageViewCell)_collectionView.DequeueReusableCell(new NSString(“ImageViewCell”), indexPath);
var image = _images[indexPath.Row];
var imagePath = image.ThumbnailPath;
if (!string.IsNullOrEmpty(imagePath))
{
cell.ImagePath = imagePath;
}
return cell;
}
答案 0 :(得分:1)
这可能是由于UITableView
中单元的重用系统。配置单元时,您是否正确设置了数据?您叫CollectionView
的{{1}}吗?
编辑:您应该在配置单元格的reloadData()
中调用它。这样,每次重复使用单元格时,您都会更新其内容。
编辑2 :就像我说的那样,请在设置表格视图单元格时尝试添加集合视图tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell
。您还必须清理数据源和委托,因为它是一个重用的单元格,因此它可能已经与另一个值一起使用。
reloadData()
答案 1 :(得分:0)
迅速5
将此添加到您的自定义UITableViewCell
类中。
override func prepareForReuse() {
collectionView.dataSource = nil
collectionView.delegate = nil
collectionView.reloadData()
collectionView.dataSource = self
collectionView.delegate = self
}