切入主题。 我有一个数组定义,变量I声明如下
@interface KTCBLocationTableViewController () {
NSArray *deserializedArray;
int i;
}
它存储从远程数据库检索的数据,当我使用以下代码查看内容时,该数据库最终包含以下数据
//This line is inside a for-loop
[[deserializedArray objectAtIndex:i] objectForKey:@"rname"];
上述代码的结果显示以下数据
Location A Location B Location C Location D Location E Location F Location G Location H
我打算将这些数据放入UITableView的每个单元格中。使用以下代码。 此表附带可扩展行,以下代码仅显示每行的部分。
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
}
// Configure the cell...
if ([self tableView:tableView canCollapseSection:indexPath.section])
{
if (!indexPath.row)
{
// first row
cell.textLabel.text = [[deserializedArray objectAtIndex:i] objectForKey:@"rname"]; // only top row showing
i++;
if ([expandedSections containsIndex:indexPath.section])
{
cell.accessoryView = [DTCustomColoredAccessory accessoryWithColor:[UIColor grayColor] type:DTCustomColoredAccessoryTypeUp];
}
else
{
cell.accessoryView = [DTCustomColoredAccessory accessoryWithColor:[UIColor grayColor] type:DTCustomColoredAccessoryTypeDown];
}
}
else
{
//The remaining of code are not given due to the irrelevance.
我发现在晃动后细胞正在发生变化,位置A可能会变成G或其他。
我看了一下这条线。
cell.textLabel.text = [[deserializedArray objectAtIndex:i] objectForKey:@"rname"]; // only top row showing
i++;
我觉得这就是问题所在。但是,我不知道我怎么能填充"数组中的所有数据到每行的单元格并使其保持一致。
答案 0 :(得分:0)
使用' indexPath.row'。变化
cell.textLabel.text = [[deserializedArray objectAtIndex:i] objectForKey:@"rname"]; // only top row showing
到
cell.textLabel.text = [deserializedArray[indexPath.row] objectForKey:@"rname"]; // only top row showing
答案 1 :(得分:0)
嗯,你的问题很简单,但解决方案可能有点复杂。不按indexPath的顺序调用cellForRowAtIndexPath方法。我建议使用indexPath.row而不是i,即使它不容易