0

我有一个应用程序使用NSFetchedResultsController从数据库中获取各种结果并将它们显示在UITableViewCell中。出于艺术的原因,我总是希望交替的细胞是左右导向的,就像在Messages中的对话。上下滚动时保持UITableView中单元格的左/右位置

我目前使用的integer称为entryIndexPath,其递增,然后在if语句中使用内cellForRowAtIndexPath确定电池是否应该向左或基于该整数是奇数还是偶数右对齐实现这一目标。

我的问题是,当滚动备份表时,这个左/右分配可能会感到困惑,刚刚滚动的单元格可能会在从顶部重新显示时重新分配,因为cellForRowAtIndexPath正在调用,计数器正在递增。

我需要一个确定的方法来确保从FRC获得一组新的结果时,左/右值的分配是正确和牢固的。我知道我需要在cellForRowAtIndexPath以外这样做,但我很努力地看到我应该在应该这样做。任何想法或建议?

编辑:我还要指出,我的托管对象目前没有Left/Right变量或类似的东西,所以创建一个会很尴尬,重新创建大量的数据,等等。如果没有这样做的手段,这将是理想的。

回答

2

确保您明确设置每种行类型的单元格类型。我也建议这种替代方法从indexPath得到序列:

NSManagedObject *object = [self.fetchedResultsController objectAtIndexPath:indexPath]; 
NSUInteger position = [self.fetchedResultsController.fetchedObjects indexOfObject:object]; 
NSString *cellIdentifier = position % 2 ? @"RightCell" : @"LeftCell"; 
id cell = [self.tableView dequeueReusableCellWithIdentifier:cellIdentifier]; 
+0

明白了,谢谢。我必须对自定义单元格类型进行一些修改,并且有时会显示来自“fetchedObjects”(混洗阵列)以外的数组的过滤结果,但现在所有工作都正在进行 - 谢谢! – Luke 2013-04-07 08:59:08

相关问题