【问题标题】:tableView beginUpdates / endUpdates block reloading entire table even when emptytableView beginUpdates / endUpdates 阻止重新加载整个表,即使是空的
【发布时间】:2015-02-25 03:17:36
【问题描述】:

我有一个 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];

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

在调试过程中,我开始剥离东西。我一直到只有我有的地步

        [self.tableView beginUpdates];
        [self.tableView endUpdates];

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

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

【问题讨论】:

  • 那么,cellForRowAtIndexPath 正在为您的数据源中的每个项目调用?

标签: ios objective-c uitableview


【解决方案1】:

目标 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);

【讨论】:

    猜你喜欢
    • 2011-12-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-19
    相关资源
    最近更新 更多