在UITableView中遇到问题

时间:2012-02-02 23:33:59

标签: iphone objective-c cocoa-touch uitableview nsarray

我的搜索方法中有以下代码更新了tableview。

for (int x = 0; x < [array count]; x++) {
//network stuff here
self.searchedReservations = [aSearchObjectType objectsFromServerDictionaries:aResultsArray];
[self.aTableView reloadSections:[NSIndexSet indexSetWithIndex:0] withRowAnimation:UITableViewRowAnimationFade];
}

数组中的每个对象代表我的表中的一个部分,对于大多数情况,计数将是4,因此4个部分。

现在,代码正在为表格的单元格中的所有部分加载相同的数据。而不是表格每个部分的唯一数据。

以下是加载单元格的代码。我缺少一些将数据映射到表格右侧部分的逻辑。

MyClass *object = [self.searchedReservations objectAtIndex:iIndexPath.row];
cell.textLabel.text = object.customerFullName;

1 个答案:

答案 0 :(得分:1)

我假设你的'cellForRowAtIndexPath'方法中有以下代码:

MyClass *object = [self.searchedReservations objectAtIndex:iIndexPath.row];
cell.textLabel.text = object.customerFullName;

表格被组织成各个部分,然后在每个部分中都有行。每个部分的行再次从零开始。

如果您在第0部分,加载单元格0,上面的代码不考虑部分编号,只考虑行号 - 所以它正在加载:

[self.searchedReservations objectAtIndex:0] 

填充单元格。

当你在第1部分,在第一部分加载单元格0时,你正在检索完全相同的值,因为你只是使用行号。即。你还在加载

[self.searchedReservations objectAtIndex:0]

你可能认为你在每个部分的加载之间改变'searchingReservations'对象的值(这就像你在上面的循环中尝试做的那样)但是我不确定这个正在工作(因为代码填充的searchReservation似乎在每个循环计数器中没有做任何不同的事情)。此外,第一次加载表时,无论如何都会遍历所有部分中的所有行。

我认为您需要在填充单元格时使用indexPath.section字段以及indexPath.row字段,以确保在相应的部分中设置相应的行。

还可以使用调试器查看在cellForRowAtIndexPath方法和循环中进行的更新,并确保为循环的每个增量获取/使用不同的“searchingReservations”对象,并且这与“searchingReservations”对象匹配在cellForRowAtIndexPath方法中。