gpt4 book ai didi

ios - 为什么我的 uitableview 单元格行重复字幕

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:16:35 25 4
gpt4 key购买 nike

在我的 uitableview 中有两个部分

首先是从核心数据中获取

other 是通过存储在 NSMutableArray(otherFriends) 中的文本字段添加的

这是我的代码

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
if([otherFriends count]>0)
{
return 2;
}
return 1;
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)sectionIndex
{
if(otherFriends == 0)
{
return [[[[self fetchedResultsController]sections]objectAtIndex:0]numberOfObjects];
}
return [otherFriends count];
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"newGroupCell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

if (cell == nil)
{
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier];
}

cell.textLabel.font = [UIFont fontWithName:@"Helvetica-Light" size:20.0];
cell.textLabel.backgroundColor = [UIColor colorWithWhite:1.0f alpha:0.0f];

if(indexPath.section == 0)
{
user = [[self fetchedResultsController] objectAtIndexPath:indexPath];

cell.textLabel.text = user.name;
cell.detailTextLabel.text = user.primaryResource.status;

[cell.imageView setFrame:CGRectMake(0, 0, 50, 50)];
[cell.imageView.layer setMasksToBounds:YES];

if (user.photo != nil)
{
cell.imageView.image = user.photo;
}
else
{
cell.imageView.image = [UIImage imageNamed:@"defaultPerson"];
}
}
else
{
cell.textLabel.text = [otherFriends objectAtIndex:indexPath.row];
cell.imageView.image = [UIImage imageNamed:@"defaultPerson"];
}

return cell;
}

第一部分也有字幕,但第二部分单元格没有字幕

当我添加新 friend 时它工作正常直到所有行都可见,但是当添加新 friend 并且该行不可见并且要查看该行我必须滚动,然后该行显示第 0 节中第一行的副标题(第一个单元格)及其在第 1 节第三行中的重复。只有副标题在重复,但正文没有。

几个小时以来,我一直在努力解决这个问题,但没有成功。

最佳答案

这是因为在您的 else 分支中您没有设置 cell.detailTextLabel.text

当一个单元格被回收时,旧的 detailTextLabel 会保留在那里。您需要在条件的两个分支中设置单元格的所有属性,以防它已被回收。

if(indexPath.section == 0)
{
user = [[self fetchedResultsController] objectAtIndexPath:indexPath];

cell.textLabel.text = user.name;
cell.detailTextLabel.text = user.primaryResource.status;

[cell.imageView setFrame:CGRectMake(0, 0, 50, 50)];
[cell.imageView.layer setMasksToBounds:YES];

if (user.photo != nil)
{
cell.imageView.image = user.photo;
}
else
{
cell.imageView.image = [UIImage imageNamed:@"defaultPerson"];
}
}
else
{
cell.textLabel.text = [otherFriends objectAtIndex:indexPath.row];
cell.imageView.image = [UIImage imageNamed:@"defaultPerson"];
// ADDED
cell.detailTextLabel.text = @"";
// You may also need to adjust the frame of the cell.imageView
// because it could have been recycled.
}

关于ios - 为什么我的 uitableview 单元格行重复字幕,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14402488/

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