gpt4 book ai didi

ios - 当 UITableView 完全重新加载时

转载 作者:行者123 更新时间:2023-11-28 22:35:37 25 4
gpt4 key购买 nike

我有一个控件可以部分或完全更改 tableView 的内容。更改发生后,我设置了一个标志 tableViewContentHasChanged:

BOOL tableViewContentHasChanged = YES;
[self.tableView reloadData];
tableViewContentHasChanged = NO;

我的问题出现在tableView:viewForHeaderInSection:;它在 TableView 重新加载后调用,因此我的标志在该方法中无效。

简而言之:当表完全 重新加载时观察的正确方法是什么,以便我可以将标志设置为NO?而且,我可能做错了什么?

最佳答案

我认为处理这个问题的最佳方法是在数据模型中,正如其他人提到的那样,但如果您真的需要这样做,您可以执行以下操作:

根据 Apple's documentation ,当您调用 reloadData

时,只会重新加载可见的部分/单元格

所以你需要知道什么时候呈现最后一个可见的标题,所以你设置:

  tableViewContentHasChanged = YES;
[self.tableView reloadData];

然后在cellForRowAtIndexPath中:获取最后显示的索引,存入成员变量中:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
//Your cell creating code here
UITableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:@"TryCell"];

//Set last displayed index here
lastLoadedSectionIndex = indexPath.section;
NSLog(@"Loaded cell at %@",indexPath);
return cell;
}

这样,当 viewForHeaderInSection: 被调用时,您将知道哪个是该重新加载事件中的最后一个 header :

- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section{
//Create or customize your view
UIView *headerView = [UIView new];

//Toggle tableViewContentHasChanged when it's the last index
if (tableViewContentHasChanged && section == lastLoadedSectionIndex) {
tableViewContentHasChanged = NO;
NSLog(@"Reload Ended");

}
return headerView;
}

请注意,此方法仅在最后一个可见部分至少有 1 行时才有效。

希望这对您有所帮助。

关于ios - 当 UITableView 完全重新加载时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16130257/

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