gpt4 book ai didi

objective-c - UITableView:加载所有单元格

转载 作者:搜寻专家 更新时间:2023-10-30 19:50:43 25 4
gpt4 key购买 nike

是否可以在加载 View 时加载 UITableView 的所有单元格,以便在我滚动时不加载它们?(我会在执行此操作时显示加载屏幕)

拜托,这是我项目中的唯一方法(抱歉太复杂了,无法解释原因 ^^)

编辑:

好吧,让我向你解释一下,我确定要做什么:

- (UITableViewCell *)tableView:(UITableView *)tableView
cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
NSString *cellIdentifier = [NSString stringWithFormat:@"Identifier %i/%i", indexPath.row, indexPath.section];
CustomTableCell *cell = (CustomTableCell *)[tableView dequeueReusableCellWithIdentifier:cellIdentifier];
NSDictionary *currentReading;

if (cell == nil)
{
cell = [[[CustomTableCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellIdentifier] autorelease];

UILabel *label;
UIView *separator;

if(indexPath.row == 0)
{
// Here I'm creating the title bar of my "table" for each section
}
else
{
int iPr = 1;

do
{
currentReading = [listData objectAtIndex:iPr-1];
iPr++;
} while (![[currentReading valueForKey:@"DeviceNo"] isEqualToString:[devicesArr objectAtIndex:indexPath.section]] ||
[readingresultsArr containsObject:[currentReading valueForKey:@"ReadingResultId"]]);

[readingresultsArr addObject:[currentReading valueForKey:@"ReadingResultId"]];
//
// ...
//
}
}
return cell;
}

我的错误发生在 do-while-loop 中:“listData”是一个包含多个字典的数组。我的问题是当我慢慢向下滚动我的表格时,一切都很好,但是当我快速滚动到 View 的末尾然后我滚动到中间时,我得到了 iPr 的错误数组的范围。所以问题是,第一节的最后一行已经添加到“readingresultsArr”,但还没有加载或想再次加载。这就是为什么我想一次加载所有单元格的原因。

最佳答案

您可以简单地通过调用以下命令来预先分配所有单元格:

[self tableView: self.tableView cellForRowAtIndexPath: indexPath];

对于表格中的每一行。将以上行放入适当的 for 循环中,并在 viewDidAppear 中执行此代码。

然而,问题在于 tableView 不会保留所有这些单元格。它会在不需要时丢弃它们。

您可以通过将 NSMutableArray 添加到您的 UIViewController 来解决该问题,然后缓存在 cellForRowAtIndexPath 中创建的所有单元格。如果您的表在其生命周期内有动态更新(插入/删除),您也必须更新缓存数组。

关于objective-c - UITableView:加载所有单元格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12268812/

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