代码之家  ›  专栏  ›  技术社区  ›  Corey Floyd

在使用NSPredicate进行筛选后更新UItableView及其数据源的模式

  •  1
  • Corey Floyd  · 技术社区  · 15 年前

    我的当前设置:

    在我的模型中:

    1. 创建多维数组以 保存我的数据。(每个子阵列 表示节)。
    2. 数组来表示 单个细胞。

    在我的视图控制器中:

    1. 创建多维数组以 按住我的手机控制器(模仿 数据结构)。
    2. ivar在适当的细胞中 控制器。

    这将使我的UITableView在屏幕上正确显示单元格。现在,如果要筛选表中的数据,请执行以下操作:

    在我的模型中:

    1. 创建NSPredicate的实例。
    2. 过滤 多维数组。
    3. 在每个字典中设置一个 过滤数组。

    1. 我创建了一个新的多维 恩萨雷。此阵列将容纳 “过滤”的单元格控制器 “数据”
    2. 在电流中循环 多维控制器阵列。 模特的旗子挂上了。
    3. 更换未过滤的控制器 用新的数组。

    为了完成这一点,我向视图控制器添加了更多步骤:

    在我的视图控制器中:

    1. 我创建了一个新的多维 恩萨雷。此阵列将容纳 “数据”
    2. 在电流中循环 多维控制器阵列。 如果需要,将其添加到新的“筛选数组”
    3. 创建一个新的NSArray来保存索引 将被删除。
    4. 多维控制器阵列。 将其单元格的索引添加到 “toBeDeleted”数组,如果其模型
    5. 更换未过滤的控制器 用新的数组。
    6. 表演 删除RowsatinExpaths:withRowAnimationn。

    到目前为止,这种方法并不是最有效的。我在删除带有边框的行时遇到问题(删除空部分和所有可见单元格)。

    这让我觉得也许我的方法有缺陷。有人在应用程序中实现过这个吗?你是怎么解决的?你的行动画行吗?

    1 回复  |  直到 15 年前
        1
  •  0
  •   Glenn Barnett    15 年前

    更糟的是,你在实际设备上试过NSPredicate吗?


    更新:考虑到NSPredicate是可用的,我所能补充的是,我用deleteRowsAtI得到了不可预知的结果nExpaths:withRowAnimation作为嗯-我不得不接受调用重载数据和非动画转换。

    在您的例子中,可见的变化可能是不明显的,我怀疑从可用性的角度来看,仅仅使用一个从北到南在UITableView区域移动的动画UIImageView就足够了。(不幸的是,这本身就是一个挑战)。