我在UITableview中添加了动态生成的部分。我有一个很好的一小部分代码,可以找出放置节标题的索引。因此,我的numberOfSectionsInTableView
和numberOfRowsInSection
代码效果很好。
问题是我的tableview看起来像这样,说我的numberOfRowsInSection
返回2,3,5:
- == A == -
亚伦
亚历克斯 - == B == -
亚伦
亚历克斯·阿尔弗雷德 - == C == -
亚伦·亚历克斯·阿尔弗雷德·巴特·凯西
所以基本上每次新的部分开始时,indexPath.row
都会重置为0?
有解决方法吗?或者我是否需要自己单独维护每个单元需要哪个indexPath.row
?
现在看起来我必须遍历我的名字数组,找出我所在的indexPath.section
,然后计算每个部分的字母数并计算偏移量。
答案 0 :(得分:3)
indexPath
包含行和部分。您可以通过添加前面的部分及其行来计算绝对行:
NSInteger absoluteRow = indexPath.row;
for(int section = 0; section < indexPath.section; ++section)
{
absoluteRow += [tableView numberOfRowsInSection:section];
}
另一种(在我看来更好)的方式是使用二维数组作为数据结构。数组包含节,每个节包含节的行。您可以使用以下方法加载数据:
[[array objectAtIndex:indexPath.section] objectAtIndex:indexPath.row];
答案 1 :(得分:0)
是的,您需要告诉每个部分的行要显示的内容。一种简单的方法是将字段名称作为键,将这些键的值作为包含每个部分的特定项目的数组。
你可能需要在这里使用字典方法添加某种排序函数,但是如果你使用名字然后按字母顺序排序可能是你想要的任何功能。