【问题标题】:UITableView with NSFetchedResultsController keep header for section without objects带有 NSFetchedResultsController 的 UITableView 为没有对象的部分保留标题
【发布时间】:2013-01-27 21:49:35
【问题描述】:

我有一堆 NSManagedObjects,它们在 UITableView 中被分成多个部分。

[Section Header 0]
[NSManagedObject]
[NSManagedObject]
[NSManagedObject]
[Section Header 1]
[NSManagedObject]
[Section Header 2]
[NSManagedObject]
[NSManagedObject]
[NSManagedObject]

用户可以按部分编辑对象,包括删除它们。假设我删除了上面[Section 1] 中的[NSManagedObject]。这会更新我的 NSFetchedResultsController 并删除行和部分,包括部分标题。

有没有办法用任何对象保留空白部分?我考虑过放入一些代码来设置节的最小计数,但问题是它不会与 NSFetchedResultsController 同步。添加额外的部分只会将其添加到底部,但我想在第一部分之后添加它,无论之后是否有一个或多个部分。

这些对象都是服务器驱动的,所以我想做这样我就不会有很多硬编码的部分。

谢谢。

【问题讨论】:

    标签: ios core-data nsfetchedresultscontroller nsmanagedobject


    【解决方案1】:

    您应该在数据模型中包含属性或关系以跟踪各个部分。看到您对用户进行分组,您必须有一个可以在数据中建模的标准。

    然后将NSFetchedResultsController 初始化为适当的sectionNameKeyPath。使用 Apple 的普通代码显示部分信息(如果有)。

    您在每个部分中实际显示的内容仍取决于您。 (这是您在数据源方法中放入的内容)。但至少你可以有一个一致的部分系统和对象分组。

    【讨论】:

    • 感谢您的回答。关于做一个 UITableView 的任何建议,其中部分是一个 NSManagedObject 并且行是它与其他 NSManagedObjects 的关系?
    • 是的。只需像这样使用sectionNameKeyPath:(例如,对于“员工”)@"department.name"
    猜你喜欢
    • 2013-07-09
    • 2014-01-21
    • 2015-04-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多