Uitableview 从setEditing更改核心数据谓词

Uitableview 从setEditing更改核心数据谓词,uitableview,nsfetchedresultscontroller,editing,reloaddata,Uitableview,Nsfetchedresultscontroller,Editing,Reloaddata,我的应用程序维护一个数据列表,其中一些行可能被用户隐藏。隐藏/显示按钮位于编辑面板中,可通过将tableview置于编辑模式,然后选择要编辑的行来访问该面板。这意味着在编辑模式下,所有行都需要显示,即使是那些通常隐藏的行;否则就没有办法把它们藏起来 我通过将fetchedResultsController设置为nil并在setEditing中重新加载表来实现这一点,然后修改为fetchedResultsController构建谓词的代码,以检查表是否处于编辑模式,如果处于编辑模式,则跳过谓词中排

我的应用程序维护一个数据列表,其中一些行可能被用户隐藏。隐藏/显示按钮位于编辑面板中,可通过将tableview置于编辑模式,然后选择要编辑的行来访问该面板。这意味着在编辑模式下,所有行都需要显示,即使是那些通常隐藏的行;否则就没有办法把它们藏起来

我通过将fetchedResultsController设置为nil并在setEditing中重新加载表来实现这一点,然后修改为fetchedResultsController构建谓词的代码,以检查表是否处于编辑模式,如果处于编辑模式,则跳过谓词中排除隐藏列表的部分。因此,当用户点击编辑按钮时,表格将在进入编辑模式的过程中重新加载所有行,并在退出的过程中再次加载未隐藏的行

这可以很好地工作,只是它已经消除了人们在进入和退出编辑模式时通常看到的动画。额外的重新加载使它看起来很突然。如果我在调用[super setEditing:animated]之前或之后重新加载,则没有区别


有没有更好的方法或地方可以做到这一点

使CD对象包含可见性属性。进入编辑模式时,翻转所有隐藏单元格的属性。使fetchedResultsController的谓词包含可见性属性。如果您已实现回调,它将自动添加表格单元格。

使您的CD对象包含可见性属性。进入编辑模式时,翻转所有隐藏单元格的属性。使fetchedResultsController的谓词包含可见性属性。如果您已实施回调,它将自动添加表格单元格。

来自:

修改提取请求 您不能简单地更改fetch请求来修改结果。如果要更改提取请求,必须:

  • 如果您使用的是缓存,请将其删除(使用deleteCacheWithName:)。 通常,如果要更改提取,则不应使用缓存 请求
  • 更改获取请求
  • 调用performFetch:
  • 查看与销毁控制器并重新加载表相比,这是否更有效。

    来自:

    修改提取请求 您不能简单地更改fetch请求来修改结果。如果要更改提取请求,必须:

  • 如果您使用的是缓存,请将其删除(使用deleteCacheWithName:)。 通常,如果要更改提取,则不应使用缓存 请求
  • 更改获取请求
  • 调用performFetch:

  • 看看这是否比销毁控制器并重新加载表更有效。

    性能蚀刻后表不会更新,除非我尝试避免使用重新加载。我还需要做些什么来实现这一点吗?在performFetch之后,表不会更新,除非我使用重载,这是我试图避免的。我还需要做些什么来实现这一点吗?这很有效,谢谢!它不是100%平滑的,因为表格在进入编辑模式的同时更新,但我认为这可能是最好的。我仍然不明白为什么另一个史蒂夫的建议不起作用。这起作用了,谢谢!它不是100%平滑的,因为表格在进入编辑模式的同时更新,但我认为这可能是最好的。不过,我仍然不明白为什么另一个史蒂夫的建议不起作用。