0

我有一个应用程序,它使用NSFetchedResultsController来从数据库中获取各种结果并将它们显示在UITableViewCell. 出于艺术原因,我一直希望交替的单元格是左右方向的,就像Messages.

我目前正在通过使用integercalled来实现这一点entryIndexPath,它会递增,然后在if内部的语句中使用,cellForRowAtIndexPath以根据该整数是奇数还是偶数来确定单元格是左对齐还是右对齐。

我的问题是,当向上滚动表格时,这个左/右分配可能会混淆,并且从顶部重新出现时可以重新分配刚刚滚动的单元格,因为cellForRowAtIndexPath正在调用,计数器正在递增。

我需要一种万无一失的方法来确保当从 FRC 获得一组新结果时,左/右值被正确且牢固地分配。我知道我需要在 之外执行此操作cellForRowAtIndexPath,但我正在努力寻找应该在哪里执行此操作。有什么想法或建议吗?

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

4

1 回答 1

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];
于 2013-04-06T21:39:45.840 回答