Ios 在UITableviewCell中管理视图
编辑:更新代码以完成我想做的事情 我有一个表视图,我想在其中动态地将视图数组加载到行中 例如,如果数组中有两个对象:Ios 在UITableviewCell中管理视图,ios,uitableview,Ios,Uitableview,编辑:更新代码以完成我想做的事情 我有一个表视图,我想在其中动态地将视图数组加载到行中 例如,如果数组中有两个对象:{UITextField object,UIImage image}我希望第一行显示文本字段,第二行显示图像。我不知道如何刷新/管理这些内容,这样它们就不会相互叠加。当我滚动时,随着单元格在队列中被重用,图像和文本字段被添加到彼此的顶部 假设我的项目数组名为arrayOfItems,包含我要显示的文本字段或图像列表 根据下面的答案,下面的代码有效 [tableView regist
{UITextField object,UIImage image}
我希望第一行显示文本字段,第二行显示图像。我不知道如何刷新/管理这些内容,这样它们就不会相互叠加。当我滚动时,随着单元格在队列中被重用,图像和文本字段被添加到彼此的顶部
假设我的项目数组名为arrayOfItems,包含我要显示的文本字段或图像列表
根据下面的答案,下面的代码有效
[tableView registerClass:[UITableViewCell class] forCellReuseIdentifier:cellIdentifier];
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"MyIdentifier"];
for (id obj in [cell.contentView subviews]) {
[obj removeFromSuperview];
}
[cell.contentView addSubView:[self.arrayOfItems objectAtIndex:indexPath.row];
为子视图提供一个标记,如果重新使用该单元,则将其删除:
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"MyIdentifier"];
if (cell == nil) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:@"MyIdentifier"];
cell.selectionStyle = UITableViewCellSelectionStyleNone;
}
else
{
UiView* view = [cell viewWithTag:1907];
[view removeFromSuperView];
}
UiView* view = [self.arrayOfItems objectAtIndex:indexPath.row];
view.tag = 1907;
[cell addSubView:view];
return cell;
}
我认为您应该自定义两个不同的UITableView单元格 在
cellforrowatinexpath
NSInteger row = indexPath.row;
if(row%2 ==0){
// register your UITextField cell
}else{
// register your UIImage View cell
}
我认为这是一种更好的方法。您始终可以初始化tableviewcell。这将清除/刷新单元格 使用: 而不是:
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"MyIdentifier"];
if (cell == nil) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:@"MyIdentifier"];
cell.selectionStyle = UITableViewCellSelectionStyleNone;
}
我希望这能起作用。在将对象添加到cell.contentView之前添加此行
for (id obj in [cell.contentView subviews]) {
[obj removeFromSuperview];
}
然后在cell.contentView上添加对象,如下所示
[cell.contentView addSubView:[self.arrayOfItems objectAtIndex:indexPath.row];
那可能对你有帮助。谢谢。这是可行的,但我不得不稍微修改我的代码的其余部分。
[cell.contentView addSubView:[self.arrayOfItems objectAtIndex:indexPath.row];