gpt4 book ai didi

ios - 如何在使用 deleteRowsAtIndexPaths 删除行时删除节标题

转载 作者:行者123 更新时间:2023-11-29 03:27:57 24 4
gpt4 key购买 nike

我目前有一个包含多个部分的表格 View 。每个部分包含特定日期的数据。每个部分都有一个标题,说明数据是在多少天前输入的。

当使用deleteRowsAtIndexPath删除行时,当该部分中的所有行都被删除后,我试图删除部分标题。

当遇到这个问题时,我首先从填充 TableView 的数组中删除数据,然后在删除项目后刷新 TableView 以更新 View 。这存在一个问题,即 View 重新加载时出现可怕的不稳定过渡。

我决定使用deleteRowsAtIndexPaths,它运行良好且顺利。这就带来了一个问题,即当您删除某个部分中的所有行时,标题仍然保留。

这就是问题的核心。

如果我使用deleteRowsAtIndexPaths,那么动画效果很好,但之后我无法刷新表格,因为它会破坏动画。但如果我使用它,那么删除后我会留下部分标题。

如果我刷新,那么部分标题将会消失,但动画对用户来说很糟糕。

这是我目前使用的代码:

// This is the method done when we go into slide to delete editing
- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath {

// This allows us to calculate what row was clicked rather than the section and row
NSUInteger row = 0;
NSUInteger sect = indexPath.section;
for (NSUInteger i = 0; i < sect; ++ i)
row += [self tableView:tableView numberOfRowsInSection:i];
row += indexPath.row;

// This gets us the exercise event that has been clicked

BExerciseEvent * exerciseEvent = _exercise.exerciseEvents[row];

NSInteger j;

for (j = 0; j < _exercise.exerciseEvents.count; j++) {
BExerciseEvent * event = _exercise.exerciseEvents[j];

if ([exerciseEvent isEqual:event]) {

// Delete from Database
[event deleteAllParametersForExerciseEvent];
[event deleteRow];

// Delete correct rows from array
_exerciseEvent = _sections[(indexPath.section - 1)][indexPath.row];
[_sections[(indexPath.section - 1)] removeObject: _exerciseEvent];

// Delete from table view
[tableView deleteRowsAtIndexPaths:@[[NSIndexPath indexPathForRow:indexPath.row inSection:(indexPath.section)]] withRowAnimation:UITableViewRowAnimationTop];

}
}

[super setEditing:NO animated:YES];
[self.tableView setEditing:NO animated:YES];
[self.navigationController setToolbarHidden:YES animated:YES];

}

感谢您提供的任何帮助或建议

最佳答案

最好的选择是删除整个部分。当然,这意味着您的数据源需要设置,因此该部分确实消失了,而不仅仅是设置了 0 行。

您不必删除每一行,而是从数据源中删除整个部分,然后调用:

[tableView deleteSections:[NSIndexSet indexSetWithIndex:someSection] withRowAnimation:UITableViewRowAnimationTop];

关于ios - 如何在使用 deleteRowsAtIndexPaths 删除行时删除节标题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20206916/

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