所以我有一個UITableView,我想在點擊按鈕時更新一個區段。現在,本節中的行數將使用不同的數組填充。我根據字典中的索引選擇要返回哪一個。像這樣:iOS 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節的行取決於不同的數組。所以現在在我的表格視圖中,我有一個按鈕在第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];
}
}
你能顯示代碼,你添加一個小區在哪裏更新第1部分以顯示第二個數組? – anhtu