【问题标题】:Smooth reload of uitableview data when rows are deleted删除行时平滑重新加载 uitableview 数据
【发布时间】:2011-09-29 09:39:22
【问题描述】:

当它滚动到屏幕底部时,我正在尝试重新加载 uitableview。我删除了前几行并在底部添加了更多行。 之前新闻行被添加到uitableview的数据源,我调用[tableview reloaddata]方法。这是因为我希望 tableview 显示之前在其上可见的行。

它正确地重新加载了数据,但表格视图中突然出现了抖动。它会闪烁,不会提供良好的用户体验。所以我的问题是

  1. 如何更新 uitableview 当从顶部开始的几行是 删除而没有 抽搐/闪烁效果?

  2. 当前可见行也应保留在刷新的视图中。

有什么想法吗?当我正确更新数据源时,没有崩溃。

TIA,

普雷文斯

【问题讨论】:

  • 您是否使用 -(void) tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath 删除?
  • 不,我只是从数据源中删除数据。我希望这反映在我的 uitableview 中。

标签: iphone objective-c ipad uitableview


【解决方案1】:

从 tableView 委托中的数据源中删除数据。

 -(void) tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath
    {


            NSString *key = [keys objectAtIndex:indexPath.section];
            NSMutableArray *nameSection =[names objectForKey:key];

            int itemID=item.ID;
            if ([nameSection count]==1) {
                [self.keys removeObjectsInArray:[NSArray arrayWithObject:key]];

                [tableView deleteSections:[NSIndexSet indexSetWithIndex:indexPath.section] withRowAnimation:UITableViewRowAnimationFade];
            }
            else {
                [nameSection removeObjectAtIndex:indexPath.row];
                [self.names setValue:nameSection forKey:key];

                [tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] 
                                 withRowAnimation:UITableViewRowAnimationFade];
            }
        }

check this too

【讨论】:

  • 问题是我只知道我想删除数据源数组中的哪些索引,所以我认为上述解决方案行不通。用户没有自己删除行。
  • 如果您的数据源是数组,您可能知道从数组中删除的对象的索引。使用此索引创建索引路径。 NSIndexPath *indexPath = [NSIndexPath indexPathForRow:0 inSection:0]; [tableView deleteRowsAtIndexPaths:[NSArray arrayWithObjects:indexPath,nil] withRowAnimation:UITableViewRowAnimationFade];
  • 我会试试这个并在这里更新。我可能不得不在这里搞砸我的 MVC 以获得索引。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多