Iphone 分区的UITableView问题

Iphone 分区的UITableView问题,iphone,objective-c,uitableview,Iphone,Objective C,Uitableview,我已经编写了所有代码,将NSMutableArray划分为UITableView的部分。但在cellForRowAtIndexPath中,我发现indexPath.row只返回当前节的行。是否有任何方法可以简单地为整个UITableView提供行数。如果有人需要查看代码,我将附加它,但我认为回答这个问题不是很有用,除非我必须使用另一种算法来查找cellForRow。是的,indexPath的row属性是节中的行,因此需要存储数组数组(每个节的数组)。比如: // an array of arra

我已经编写了所有代码,将NSMutableArray划分为UITableView的部分。但在cellForRowAtIndexPath中,我发现indexPath.row只返回当前节的行。是否有任何方法可以简单地为整个UITableView提供行数。如果有人需要查看代码,我将附加它,但我认为回答这个问题不是很有用,除非我必须使用另一种算法来查找cellForRow。

是的,indexPath的row属性是节中的行,因此需要存储数组数组(每个节的数组)。比如:

// an array of arrays, one for each section
NSArray * _sectionDataArray;
构建索引时,为每个节创建一个数组,并将其存储在_sectionDataArray中。要做到这一点,您需要构建一个NSMutableDictionary对象,该对象由您的节头键入,包含一个CellThing数组(一个包含您的单元格数据的对象)。一旦你有了一本字典,你就可以抓取每个字母的数组,并将其粘贴到_sectionDataArray中

在cellForRowAtIndexPath方法中,可以通过如下方式获取节数组来访问单元格数据:

NSArray * sectionArray = [_sectionDataArray objectAtIndex:indexPath.section];
获得节数组后,您可以通过使用indexPath中的行来访问所需的单个单元格数据:


很明显,您可以通过某种方式知道每个部分应该有多少行—您将在tableview:rowsinssection:method中提供它


为了便于论证,我将假设每个节中有固定数量的行,因此数组中的索引将是indexath.section*knumorwsinssection+indexPath.row

如果确实要将索引路径转换为绝对行号,可以执行以下操作:

// 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];
}
//从行偏移量开始
int absoluteRow=indexPath.row;
//添加所有前面部分的行数
int-s;
对于(s=0;s

但是,组织数据以匹配表结构可能更好。

不要在成员变量名称前加下划线。苹果保留了这些名字的权利@benzado谢谢Ben,我没有意识到这一点。因为我的数据结构受到传入XML形状的限制,所以这是我必须的解决方案。不过,不要忘记numberOfRowsInSection:是方法名称中的-2标签。应为[tableView.dataSource tableView:tableView行数节:s];方法调用不正确,您是对的,但我没有调用数据源的方法,而是调用了表视图的方法,这只是为了激怒您。:-)
// 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];
}