![在此处输入图像说明] [1]我试图在我的UITableViewCell中添加第三个标签,最初我尝试将其添加到CellForRowAtIndexPath方法并且有效,但是当我向下滚动并备份时,由于某种原因,第三个标签中的文字都混乱了。我使用PFQueryTableViewController加载单元格。
这是我的代码:
if([people count] > 0){
user = people[0];
}
if(user){
if([object objectForKey:@"itemName"]!=nil){
cell.textLabel.text = [object objectForKey:@"itemName"];
}
cell.textLabel.textColor = listColor;
cell.detailTextLabel.text = [NSString stringWithFormat:@"City: %@",[user objectForKey:@"city"]];
cell.detailTextLabel.textColor = listColor;
cell.detailTextLabel.font = [UIFont fontWithName:@"Avenir" size:10.0f];
UILabel *mainLabel = [[UILabel alloc]initWithFrame:CGRectMake(115, 50.0, 220.0, 15.0)];
mainLabel.textColor = listColor;
mainLabel.font = [UIFont fontWithName:@"Avenir" size:10.0f];
//mainLabel.textAlignment = NSTextAlignmentLeft;
[mainLabel setText: [NSString stringWithFormat:@"By: %@",[user username]] ];
[cell.contentView addSubview:mainLabel];
}
知道怎么解决这个问题吗?它严格地说是第三个标签,只有在用户向下滚动然后向上滚动后才会发生
答案 0 :(得分:2)
您似乎一直在添加UILabel
。因此,当您滚动时,UITableViewCell
会被回收,您只需添加另一个UILabel
。最佳解决方案是将UITableViewCell
子类化为在您的子类UILabel
的{{1}}方法中添加第三个init
。
另一种解决方案是在添加新版本之前更改UITableViewCell
以删除旧setThirdLabel
。但是,我建议你只更新文本,因为风格一直都是一样的。
编辑:一个例子(未经测试,只是为了得到这个想法)
.h文件:
UILabel
.m文件:
@interface CustomTableViewCell : UITableViewCell
{
@private
UILabel *anotherLabel;
}
- (void)setAnotherLabelText:(NSString *)text;
如果你这样做了,你可以使用这样的代码:
- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier
{
self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
if (self)
{
// Set up the label
anotherLabel = [[UILabel alloc] init];
// Set some initial style here
anotherLabel.textAlignment = NSTextAlignmentCenter;
anotherLabel.textColor = [UIColor colorWithRed];
// Add the label to the cell
[self addSubview:anotherLabel];
}
return self;
}
- (void)layoutSubviews
{
// Dont forget this or weird things will happen
[super layoutSubviews];
// Move your label to its final position
anotherLabel.frame = CGRectMake(0.0f, 20.0f, 200.0f, 30.0f);
}
- (void)setAnotherLabelText:(NSString *)text
{
_anotherLabel.text = text;
}
答案 1 :(得分:0)
如果没有第三个标签,单元格上总共有3个子视图(一个UIImageView,另外两个标签)...所以我说如果cell.contentView的子视图的数量小于4,那么添加一个子视图。否则,已有子视图,所以什么都不做