向上和向下滚动时,保持UITableView中单元格的左/右定位

时间:2013-04-06 11:02:53

标签: uitableview nsfetchedresultscontroller increment alternating

我有一个应用程序使用NSFetchedResultsController从数据库中获取各种结果并将其显示在UITableViewCell中。出于艺术原因,我总是希望交替的单元格左右定向,就像Messages中的对话一样。

我目前通过使用名为integer的{​​{1}}实现此目标,该entryIndexPath会增加,然后在if内的cellForRowAtIndexPath语句中使用,以确定该单元格是否应该根据整数是奇数还是偶数来左对齐或右对齐。

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

我需要一种确定的方法来确保当从FRC获得一组新的结果时,左/右值被正确且牢固地分配。我知道我需要在cellForRowAtIndexPath之外执行此操作,但我很难看到应该执行此操作的位置。有什么想法或建议吗?

编辑:我还要指出我的托管对象目前没有左/右变量或类似的东西,所以创建一个会非常尴尬,重新创建批次和很多数据等。如果没有这种方法可以做到这一点,那就太理想了。

1 个答案:

答案 0 :(得分: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];