ios - tableView beginUpdates/endUpdates block 重新加载整个表,即使为空

标签 ios objective-c uitableview

我有一个tableView,它会定期由来自远程服务的数据进行更新。我加载数据,并存储刚插入,删除或更新的各种数据的indexPaths。然后,我有一个begin / endUpdates块,可以完成必要的操作,如下所示。

    [self.tableView beginUpdates];
    if (pathsToDelete) {
        [self.tableView deleteRowsAtIndexPaths:pathsToDelete withRowAnimation:UITableViewRowAnimationNone];
    }
    if (pathsToRefresh) {
        [self.tableView reloadRowsAtIndexPaths:pathsToRefresh withRowAnimation:UITableViewRowAnimationNone];
    }
    [self.tableView insertRowsAtIndexPaths:indexPathsToAdd withRowAnimation:UITableViewRowAnimationNone];
    [self.tableView endUpdates];

我最近注意到,单元的重新加载方式超出了我的预期。在调试器中,我注意到在刷新单个记录的情况下(即,pathToRefresh是唯一具有任何内容的记录,并且它只有一个索引),实际上整个表都在重新加载。那样的话,我的意思是我看到了表中每个单元格对dataSource的请求。

在调试中,我开始精简内容。我一直到只有我的地步
        [self.tableView beginUpdates];
        [self.tableView endUpdates];

即便如此,我仍然看到整个表都重​​新加载(即,针对数据源中的每个值都触发了cellForRowAtIndexPath)。所以我以为我错过了其他事情..但是删除这两种方法导致重新加载停止。

万一没有任何内容,begin / endUpdates不应该什么都不做?我对这里实际发生的事情不知所措,因为该文档表明它们所做的只是书挡表操作-在这种情况下,我没有任何操作。

最佳答案

objective-c iOS reloadRowsAtIndexPaths,reloadSections

if([self.tableView numberOfRowsInSection:([self.tableView numberOfSections]-1)]-1 == -1){

row = 0;

}else{

row = [self.tableView numberOfRowsInSection:([self.tableView numberOfSections]-1)]-1 ;

}

NSIndexPath* indexPath = [NSIndexPath indexPathForRow: (row) inSection: ([self.tableView numberOfSections]-1)];

// [self.tableView reloadData];

[self.tableView beginUpdates];

[self.tableView reloadSections:[NSIndexSet indexSetWithIndex:0] withRowAnimation:UITableViewRowAnimationAutomatic];

[self.tableView reloadRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationNone];

[self.tableView endUpdates];



NSLog(@”Number of Sections %ld”, (long)[self.tableView numberOfSections]);

NSLog(@”Number of Rows %ld”, [self.tableView numberOfRowsInSection:([self.tableView numberOfSections]-1)]-1);

关于ios - tableView beginUpdates/endUpdates block 重新加载整个表,即使为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28710509/

相关文章:

ios - 带有 Instagram 的 Swift 2 OAuth 无法打开 Instagram 应用程序

iphone - 使用 iPhone 中的自定义按钮执行 MFMessageComposeViewController 中的按钮操作

ios - UIImage-imageWithContentsOfFile:vs initWithContentsOfFile

iphone - 如何移动 Interface Builder 放置的文本字段和按钮

ios - tableview Controller 上的粘性 UILabel

ios - 如何使用委托(delegate)将用户的输入保存在变量中?

ios - 模态视图 Controller 未调用呈现 View Controller 的dismissModalViewControllerAnimated : method

iphone - 如何测试NSLocale的返回值?

ios - 使用 Nib 作为带有 Nib 类的表节标题

ios - 点击具有顶部内容插图的表格 View 下方的 View