我建立基于UICollectionView(适用于iOS日历GitHub的链接)的基础上,一个你可以找到这个回购。这个Objc.io问题很好地描述了它背后的根本原因。
简而言之,该过程涉及创建一个NSFetchedResultsController,该控制器查询按天对事件进行分组的事件,然后将其显示在(自定义的)UICollectionView中。
原始日历具有以下不便之处:由于它基于NSFetchedResultsController中包含的节,因此它只是将日期作为节标题,而忽略了没有事件发生的日子。在这种情况下,index
NSFetchedResultsController中包含的部分的匹配日历的1:1。
我进行了修改,以便基于日历日计算节头,但是现在NSFetchedResultsController中的节与UICollectionView的节之间不再存在1:1对应关系。请记住,这些部分是基于日期的。
当我需要获取某天的部分索引时,这就是我当前正在执行的方式:
- (NSInteger)sectionForDate:(NSDate*)day
{
return [[self.fetchedResultsController.sections valueForKey:@"name"] indexOfObject:[NSString stringWithFormat:@"%@", day]];
}
问题是:有没有更有效的方法来从NSFetchedResultsController中获取节索引?
如果您认为我应该使用其他方法,请告诉我。
与FRC的不同部分以及您的数据源方法绝对没有问题。逻辑变得有点复杂,但这不是一个异常的模式。效率上不应有任何缺点。
我最近写了一个应用程序,您甚至可以在显示全天或仅显示有事件的天之间进行切换,类似于Apple的日历,在列表视图中,“空”天也被跳过。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句