ASCollectionViewController
一个简单的UICollectionViewController
子类,使使用NSFetchedResultsController
、UIMenuController
和UIRefreshControl
变得更容易。
特别是,它
- 处理对您的模型的所有更改的批处理,以更新
collectionView
。这包括回调,如果您需要额外的逻辑来响应删除/插入/更新/移动。 - 允许使用
UIMenuItem
对象在单元格上启用长按菜单。 - 轻松添加
UIRefreshControl
控制。
获取结果控制器的逻辑来自Ash Furrow的代码,该代码则来自此代码片段。
设置
- 克隆存储库**将
ASCollectionViewController.h
和ASCollectionViewController.m
添加到您的项目中。**代替UICollectionViewController
子类化ASCollectionViewController
NSFetchedResultsController
助手
使用 - 设置
managedObjectContext
属性。 - 然后调用其中一个
configureFetcher...
方法。 - 实现
numberOfSectionsInCollectionView:
、collectionView:numberOfItemsInSection:
和collectionView:cellForItemAtIndexPath:
方法,就像平常一样。请注意,您可以使用fetchedResultsController
属性来查找部分信息和对象。 - 任何对 CoreData 模型的更改都将自动反映出来。
- 实现
handleFetchResultsControllerError
方法,因为默认实现是使用abort()
调用崩溃。 - 可选地,如果您需要做特殊操作,可以实现任意一个
didInsert/Delete/Update/MoveObject
方法。
UIMenuController
助手
使用 - 使用
UIMenuItem
对象调用addLongTapMenuItems:
,以启用您希望启用的项目。 - 实现这些
UIMenuItem
对象的选区。要获取元素,请使用集合视图的选择。 - 可选地覆盖
shouldShowMenuItemForAction:forItemAtIndexPath:
方法,以自定义哪些动作/菜单项应该启用,以便在您的集合视图中为哪些项目启用。
UIRefreshControl
助手
使用 - 使用
addRefreshControlWithTarget:action:
将 UIRefreshControl 添加到您的集合视图中。
示例
请参考包含的示例项目以查看一个非常基本的实现。