• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

ios - 如何从 GetCell 方法 UICollectionView 跳过单元格/不返回单元格

[复制链接]
菜鸟教程小白 发表于 2022-12-13 15:02:07 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

我有一个“TagInstances”列表,每个列表都包含一个“颜色”字符串值。

List<TagInstance> tags

在我的 UICollectionView 中,如果出现以下情况,我想放弃 tagCells 的初始化:

tags[index.Path].color = "undefined"

我正在尝试在“cellForItemAtIndexPath”/“GetCell”方法中执行此操作:

[Export("collectionView:cellForItemAtIndexPath:")]
public UICollectionViewCell GetCell(UICollectionView collectionView, NSIndexPath indexPath)
{
    var cell = (TagCell)collectionView.DequeueReusableCell("tagCell", indexPath);

    var thisTag = tags[indexPath.Row];

    if (thisTag.color == "undefined") { /* todo: Skip over this cell somehow */ }

    try
    {
        var color = UIColor.Clear.FromHex(thisTag.color);

        cell.SetUIWithData(color, thisTag.abbreviation);

        cell.AddBorderAndShadow();
    }
    catch (Exception ex)
    {
        System.Diagnostics.Debug.WriteLine($"\ncolor : { thisTag.color }\nThrows an exception : \n{ ex }\n");
    }

    return cell;
}

目前,我的 Collection View 显示有任何 TagInstance 具有未定义颜色的间隙。我希望该系列能够毫无间隙地出现。这可能吗?



Best Answer-推荐答案


正如 rmaddy 和 SushiHangover 所说,正确的方法是拥有正确的数据源,其中只有您要显示的项目。

在某种程度上,替代方法是将那些不需要的单元格调整为宽度/高度 = 0。要使用 UICollectionView 做到这一点,您必须从 UICollectionViewFlowLayout 派生并覆盖 LayoutAttributesForElementsInRect 方法,然后返回 Size = CGSize.Empty 对于那些你不想看到的元素。

请参阅 Xamarin Docs in Introduction to UICollectionView 中的子类化 UICollectionViewFlowLayout 部分| .

同样,按照 SushiHangover 和 rmaddy 的建议,正确且更简单的方法是在数据源级别过滤元素。

关于ios - 如何从 GetCell 方法 UICollectionView 跳过单元格/不返回单元格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42822330/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap