gpt4 book ai didi

ios - 在 ios7 中删除 TableView 的最后一行时出现动画问题

转载 作者:技术小花猫 更新时间:2023-10-29 10:44:14 26 4
gpt4 key购买 nike

我在删除 tableView 中(唯一的)部分的最后一行时遇到了一些问题。任何其他行都可以正常工作,但如果我随时删除 tableView 底部的行(不仅仅是当它最后一行离开时),动画就会非常奇怪和滞后。它只是看起来不对。我还注意到更改动画类型没有任何作用。动画总是在行滑到顶部并消失时。将其更改为 UITableViewRowAnimationFade 或其他不会执行任何操作。

这是我的代码

//For the edit barButtonItem in my storyboard
- (IBAction)editButtonPressed:(id)sender {
//enter editing mode
if ([self.editButton.title isEqualToString:@"Edit"]) {
[self setEditing:YES animated:YES];
self.editButton.title = @"Done";
} else {
[self setEditing:NO animated:YES];
self.editButton.title = @"Edit";
}
}

//Editing the tableView. The user can only delete rows, not add any
- (UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath {
return UITableViewCellEditingStyleDelete;
}

- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath {
// If row is deleted, remove it from the list.
if (editingStyle == UITableViewCellEditingStyleDelete) {
//Handle the data source and backend first, then the tableView row
PFRelation *hasFavorites = [self.currentUser relationforKey:@"hasFavorites"];
[hasFavorites removeObject:[self.favorites objectAtIndex:indexPath.row]];

[self.favorites removeObjectAtIndex:indexPath.row];

//It is set to fade here, but it only ever does the top animation
[self.tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationFade];

//save to the backend
[self.currentUser saveInBackgroundWithBlock:^(BOOL succeeded, NSError *error) {
if (!error) {

} else {
NSLog(@"%@ %@", error, error.userInfo);
}
}];
}
}

我查看了所有我能找到的答案,但都没有找到。我在 tableview 中的 numberOfSections 中返回 1 因为我只想要一个部分,并且我应该能够在一个部分中有 0 行,所以我不认为这是问题。

最佳答案

这是 ios7 的一个错误.. tablerow 动画被破坏了!我的解决方法是淡出 tableViewRowAnimation 之前的单元格。

- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath
{
// hide cell, because animations are broken on ios7
double iosVersion = [[[UIDevice currentDevice] systemVersion] floatValue];
if (iosVersion >= 7.0 && iosVersion <= 8.0) {
[tableView cellForRowAtIndexPath:indexPath].alpha = 0.0;
}

[tableView deleteRowsAtIndexPaths:@[indexPath]
withRowAnimation:UITableViewRowAnimationMiddle];
}

关于ios - 在 ios7 中删除 TableView 的最后一行时出现动画问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20976700/

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