Hello Guys正在iOS App中工作,我正在UITableview
上显示用户数据。对于第一个用户,它的工作正常,但当我点击UIbutton
并希望显示下一个用户数据UITableviewCell
不清除以前的用户数据时,即使在显示之前为每个标签分配空字符串下一个用户数据。我的代码在这里
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
UILabel *headLablel,*textLabel,*subLabel,*sharedActLbl;
if (cell == nil) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
cell.selectionStyle = UITableViewCellSelectionStyleNone;
}
headLablel=[[UILabel alloc]init];
headLablel.tag=11;
[cell.contentView addSubview:headLablel];
textLabel=[[UILabel alloc]init];
textLabel.tag=12;
[cell.contentView addSubview:textLabel];
subLabel=[[UILabel alloc]init];
subLabel.tag=13;
[cell.contentView addSubview:subLabel];
任何帮助将不胜感激。感谢
答案 0 :(得分:2)
每次单元格出列时,您都会添加新的子视图(headLablel
,textLabel
,subLabel
)。这是错误的,因为当您调用dequeueReusableCellWithIdentifier
方法时,它会返回已显示的单元格。因此,您反复添加新的子视图,这就是旧数据保留的原因。
我建议你继承UITableViewCell
。
如果您不想要,可以修改您的代码:
for (UIView *subview in cell.contentView.subviews)
{
[subview removeFromSuperview];
}
headLablel=[[UILabel alloc]init];
headLablel.tag=11;
[cell.contentView addSubview:headLablel];
textLabel=[[UILabel alloc]init];
textLabel.tag=12;
[cell.contentView addSubview:textLabel];
subLabel=[[UILabel alloc]init];
subLabel.tag=13;
[cell.contentView addSubview:subLabel];
这样效率很低,因为每次都会创建新标签。
答案 1 :(得分:0)
您还可以在initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(nullable NSString *)reuseIdentifier
中创建自定义单元格类时添加子视图
如果要生成具有不同子视图的单元格,还可以设置不同的单元格样式,这样,当tableView重用单元格时,它可以提高应用程序的性能。当tableView使单元格出列时可能会导致意外问题。
快乐编程!
答案 2 :(得分:0)
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { static NSString * MyIdentifier = @" MyIdentifier&#34 ;; UITableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:MyIdentifier];
if(cell == nil)
{
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:MyIdentifier] autorelease];
}
else{
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:MyIdentifier] autorelease];
}
cell.selectionStyle = UITableViewCellSelectionStyleNone;
[cell.contentView clearsContextBeforeDrawing];
在Cell中创建UITableViewCell代码的代码替换为我的代码并检查它的工作..我已经使用mannual release如果你不是那么发布自动释放它的括号..