我编写了所有代码,将NSMutableArray划分为UITableView的部分。但是在cellForRowAtIndexPath中,我发现indexPath.row只返回当前节的行。有没有办法简单地提供整个UITableView的行数。如果有人需要查看我会附加的代码,但我不认为回答这个问题非常有用,除非我必须使用其他算法来找到cellForRow。
答案 0 :(得分:2)
是的, indexPath 的行属性是该部分中的行,因此您需要存储一个数组数组(每个部分都有一个数组)。类似的东西:
// an array of arrays, one for each section
NSArray * _sectionDataArray;
构建索引时,为每个部分创建一个数组,并将其存储在_sectionDataArray中。为此,您需要构建一个 NSMutableDictionary 对象,由您的节标题键入,包含 CellThing (包含您的单元格数据的对象)的数组。一旦你有了一本字典,你就可以抓住每个字母的数组并将其粘贴到_sectionDataArray中。
在 cellForRowAtIndexPath 方法中,您可以通过获取如下所示的节数组来访问单元格数据:
NSArray * sectionArray = [_sectionDataArray objectAtIndex:indexPath.section];
获得section数组后,您可以使用 indexPath 中的行访问您所追求的单个单元格数据:
CellThing * cellObject = [sectionArray objectAtIndex:indexPath.row];
答案 1 :(得分:1)
如果您真的想将索引路径转换为绝对行号,可以这样做:
// Start with row offset
int absoluteRow = indexPath.row;
// Add count of rows from all earlier sections
int s;
for (s = 0; s < indexPath.section; s++) {
absoluteRow += [tableView numberOfRowsInSection:s];
}
但是,组织您的数据以匹配您的表格结构可能更好。
答案 2 :(得分:0)
很明显你有办法知道每个部分有多少行 - 你在tableview中提供它:rowsInSection:method。
为了论证,我假设每个部分都有固定数量的行,因此数组中的索引是indexPath.section * kNumOfRowsInSection + indexPath.row