gpt4 book ai didi

iOS UITableView 部分中的行数对同一部分使用不同的数组

转载 作者:行者123 更新时间:2023-11-29 12:12:23 25 4
gpt4 key购买 nike

所以我有一个 UITableView,其中有一个部分我想在单击按钮时更新。现在,此部分中的行数正在使用不同的数组填充。我根据字典中的索引选择返回哪个。像这样:

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
// Return the number of rows in the section.
switch (section) {
case 0:
return 1;

case 1: {
NSMutableArray *array = [self.dict objectForKey:[NSNumber numberWithInteger:self.index]];
return [array count] + 1;
}
default:
break;
}
return 1;
}

因此,第 1 部分的行取决于不同的数组。所以现在在我的 TableView 中,我有一个按钮可以在第 1 部分插入另一行,我也更新了相应的数组。现在,当我点击另一个按钮更新此部分以显示 self.dict 数据结构中不同数组的值时,我收到错误消息:'无效更新:第 1 部分中的行数无效。更新 (3) 后现有部分中包含的行数必须等于更新 (4) 前该部分中包含的行数,加上或减去从该部分插入或删除的行数(0 插入,0 删除)加上或减去移入或移出该部分的行数(0 移入,0 移出)。因此,例如,如果在我的第一个数组中我有 3 个单元格,然后用户再添加一个,所以有 4 个单元格,那么如果用户单击应该更新第 1 部分的按钮以显示第二个数组(有 3 个单元格) ,上面的错误被抛出。我认为这是因为数据源发生了变化,行数减少了,但没有明确删除单元格。我该如何解决这个问题?

更新了更多代码:

// Insert here when the very last cell of section 1 is selected
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
NSMutableArray *array = [self.dict objectForKey:[NSNumber numberWithInteger:self.index]];
if (indexPath.section == 1 && indexPath.row == [array count]) {
[array addObject:[NSNumber numberWithInt:8]];
[self.tableView insertRowsAtIndexPaths:[NSArray arrayWithObject:[NSIndexPath indexPathForRow:[array count]-1 inSection:1]] withRowAnimation:UITableViewRowAnimationFade];
}
}


// Code for reloading the table view

- (IBAction)next:(id)sender {
self.index++;
[self.tableView reloadSections:[NSIndexSet indexSetWithIndex:0] withRowAnimation:UITableViewRowAnimationFade];
[self.tableView reloadSections:[NSIndexSet indexSetWithIndex:1] withRowAnimation:UITableViewRowAnimationFade];
}

最佳答案

您应该尝试 reloadData 而不是重新加载这些部分:

- (IBAction)next:(id)sender {
self.index++;
[self.tableView reloadData]
}

关于iOS UITableView 部分中的行数对同一部分使用不同的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33061684/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com