Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/118.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 在我介绍了节之后,indexpath.row一直在重置_Ios_Uitableview_Sections - Fatal编程技术网

Ios 在我介绍了节之后,indexpath.row一直在重置

Ios 在我介绍了节之后,indexpath.row一直在重置,ios,uitableview,sections,Ios,Uitableview,Sections,我向UITableview中添加了动态生成的部分。我有一段很好的代码,可以计算出将节头放在哪个索引中。因此,我的numberOfSectionsInTableView和numberofrowsinssection代码非常有效 问题是我的tableview看起来像这样,比如我的numberofrowsinssection返回2,3,5: -==A==-AaronAlex -==B==-亚伦亚历克斯阿尔弗雷德 -==C==-AaronAlexAlfredBartCasey 因此,基本上每次新节开始时

我向UITableview中添加了动态生成的部分。我有一段很好的代码,可以计算出将节头放在哪个索引中。因此,我的
numberOfSectionsInTableView
numberofrowsinssection
代码非常有效

问题是我的tableview看起来像这样,比如我的
numberofrowsinssection
返回2,3,5:

-==A==-
Aaron
Alex
-==B==-
亚伦
亚历克斯
阿尔弗雷德
-==C==-
Aaron
Alex
Alfred
Bart
Casey

因此,基本上每次新节开始时,
indexPath.row
都会重置回0

有办法解决这个问题吗?或者我必须自己繁琐地维护每个单元格需要哪个
indexPath.row


现在看起来我必须循环遍历我的名称数组,计算出我在哪个
indexPath.section
中,然后计算每个section的字母数并计算偏移量。

一个
indexPath
包含一行和一个section。可以通过添加前面的部分及其行来计算绝对行:

NSInteger absoluteRow = indexPath.row;

for(int section = 0; section < indexPath.section; ++section)
{
    absoluteRow += [tableView numberOfRowsInSection:section];
}

是的,您需要告诉每个部分的行要显示什么。一种简单的方法是使用一个字典,其中节名称作为键,这些键的值作为一个数组,包含每个节的特定项


您可能需要使用字典方法在此处添加某种排序功能,但如果您使用名称,则按字母顺序排序可能是您想要的功能。

这是正常的,每个部分的行都会重置。您可以修改数据结构,使其具有一个数组(用于节)或数组(用于行),并返回数组[section]。计算numberofrowsinsection。我想添加:在您的假设中,索引路径将无效。它是专门设计的,不需要在整个阵列中找到。这些协议方法被设计成像现实一样工作。你说的是“第二节第一排”,对吗?这是你必须考虑的。只是想一想:短方法确实是计算绝对指数,这取决于你用它做什么。如果你想以后用单元格的高度和动态的添加/过滤来考虑数组中的数组,否则绝对索引会变成一个麻烦。我尝试了AbthyToWo的东西,因为某些原因滚动时它不起作用。我认为这是因为如果你有一个半部分显示,那么偏移会变得混乱。我要咬紧牙关,改变我的基本数据结构。arg当然不行,对不起。您必须添加前面的所有部分。我更新了我的答案。太棒了,成功了。必须改变我的数据结构将是一个很大的困难,而且会使事情慢一点。谢谢
[[array objectAtIndex:indexPath.section] objectAtIndex:indexPath.row];