gpt4 book ai didi

ios - UITableView 偶尔重复第一个单元格

转载 作者:行者123 更新时间:2023-11-28 21:56:00 26 4
gpt4 key购买 nike

我的代码:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{

UITableViewCell *cell = nil;

NSString *homeDir = NSHomeDirectory();
if(indexPath.section == 0){
homeDir = [NSString stringWithFormat: @"%@/%@", homeDir, @"Documents"];
}else{
homeDir = [NSString stringWithFormat: @"%@/%@", homeDir, @"Documents/Archived"];
}
NSFileManager *fm = [NSFileManager defaultManager];
NSArray *dirContents = [fm contentsOfDirectoryAtPath:homeDir error:nil];

dirContents = [[dirContents reverseObjectEnumerator] allObjects];

cell = [tableView dequeueReusableCellWithIdentifier:@"MyCell"];

if (cell == nil) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"MyCell"];
}

UILongPressGestureRecognizer *lpgr = [[UILongPressGestureRecognizer alloc]
initWithTarget:self action:@selector(handleLongPress:)];
lpgr.minimumPressDuration = 1.3; //seconds
[cell addGestureRecognizer:lpgr];

int i = 0;
NSString *filename;
if([dirContents count] > 0){
filename = [[dirContents objectAtIndex:indexPath.row] lastPathComponent];
while(![[filename substringFromIndex: [filename length] - 3] isEqualToString:@"pdf"]){
i ++;
filename = [[dirContents objectAtIndex:indexPath.row + i] lastPathComponent];
}
}else{
filename = @" ";
}


cell.textLabel.text = filename;

return cell;

我遇到的问题是,有时只有第一个单元格重复返回。如果数组显示为“红色、蓝色、绿色、黄色”,则它显示为:

红色

红色

红色

红色

这只是偶尔发生。有时刷新表格时,它会正确显示,但稍后会恢复为不正确的显示。我做错了什么?

最佳答案

我在上面发表了评论,但我会尝试寻找答案,因为我怀疑这会解决你的问题,如果不只是为了展示这里实际发生的事情的话。

UITableView 应该有一个数据源。在您的原始代码中,每次 TableView 创建新单元格时,您都会创建此数据源(数组 dirContents)。看起来您的数据源是静态的,因此您可以在 UITableViewDataSource 委托(delegate)方法之外创建它,并将其放置在某个地方,例如 viewDidLoad 方法。这只是我的一个假设,即未及时创建此数组以访问您的单元格的元素。

然后,您可以在 cell.textLabel.text = filename; 之前使用 NSLog 确认您的单元格正在从该数组中获取正确的索引。

希望这能帮助您解决问题。

关于ios - UITableView 偶尔重复第一个单元格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26553510/

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