gpt4 book ai didi

ios - UITableView 开始更新

转载 作者:行者123 更新时间:2023-11-28 18:19:27 24 4
gpt4 key购买 nike

我的 UITableView 的 beginupdates 和 endupdates 有一些问题。我想使用此功能为我的 tableview 设置动画,而不是使用我一直使用到现在的 reloadData。当我使用 BeginUpdates 并提示这个时,它总是会出现问题:

'NSInternalInconsistencyException', reason: 'Invalid update: invalid number of rows in section 1.  The number of rows contained in an existing section after the update (3) must be equal to the number of rows contained in that section before the update (2), plus or minus the number of rows inserted or deleted from that section (0 inserted, 0 deleted) and plus or minus the number of rows moved into or out of that section (0 moved in, 0 moved out).'

所以我的 numberOfRowInSection 有问题:

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
int returnInt;

if (section == 0) {
if ([self datePickerIsShown]){
returnInt = 3;
}else{
returnInt = 2;
}
}else if([[[[self theNewGame] _dobbelstenen] objectAtIndex:section - 1] diceSoort] == ENUMOgen){
returnInt = 1;
}else{
returnInt = [[[[[self theNewGame] _dobbelstenen] objectAtIndex:section - 1.0] optiesDobbelsteen] count] + 1.0;
}

return returnInt;
}

我是这样调用它的:

if (indexPath.section == 0 && indexPath.row == 1) {
self.datePickerIsShown = ! self.datePickerIsShown;
[tableView beginUpdates];
[tableView endUpdates];
}

有什么问题?

亲切的问候

最佳答案

您正在将 TableView 数据源中的行数从 2 更改为 3。

if ([self datePickerIsShown]) {
returnInt = 3;
} else {
returnInt = 2;
}

您必须更新 TableView ,以便 TableView 和 TableView 数据源就行数达成一致。

if (indexPath.section == 0 && indexPath.row == 1) {
self.datePickerIsShown = ! self.datePickerIsShown;
[tableView beginUpdates];
if ([self datePickerIsShown])
[tableView insertRowsAtIndexPaths:@[[NSIndexPath indexPathForRow:2 inSection:0]]
withRowAnimation:UITableViewRowAnimationAutomatic];
else
[tableView deleteRowsAtIndexPaths:@[[NSIndexPath indexPathForRow:2 inSection:0]]
withRowAnimation:UITableViewRowAnimationAutomatic];
[tableView endUpdates];
}

注意:因为您的 TableView 只有 1 个更改,所以您不需要开始和结束更新。您可以只调用您需要的 1 个插入或删除。

if (indexPath.section == 0 && indexPath.row == 1) {
self.datePickerIsShown = ! self.datePickerIsShown;
if ([self datePickerIsShown])
[tableView insertRowsAtIndexPaths:@[[NSIndexPath indexPathForRow:2 inSection:0]]
withRowAnimation:UITableViewRowAnimationAutomatic];
else
[tableView deleteRowsAtIndexPaths:@[[NSIndexPath indexPathForRow:2 inSection:0]]
withRowAnimation:UITableViewRowAnimationAutomatic];
}

关于ios - UITableView 开始更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23311408/

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