我遇到将自定义UILabel放置在自定义表格视图单元格中的问题。 我有一个包含atrtributed标签的自定义单元格。我正在从代码中分配属性文本:
self.paymentLabel.attributedText = attributedString;
当我通过选择其中一个单元格导航到下一个屏幕时,所有单元格中的所有属性标签都将重置。
我尝试在单元格内的-layoutSubviews
方法中重新加载属性字符串,但它没有帮助。有一点有帮助的是在tableView中重新加载数据,但它肯定只是解决方法。
有谁知道会出现什么问题?
答案 0 :(得分:1)
看起来这个问题并没有与attributionText真正联系,而是与标签的处理方式有关。要检查这一点,您可以在现在设置attributedText的相同代码处设置标签背景颜色,并在“选择其中一个单元格”之后检查颜色是否相同。
答案 1 :(得分:1)
执行此操作的一种方法是在即将显示单元格时设置属性。这是我用来动态更改单元格中的属性文本的示例。它需要找到可以通过标记它来完成的UILabel(Interface Builder中的999)。
#pragma mark - UITableViewDelegate
- (void)tableView:(UITableView *)tableView
willDisplayCell:(UITableViewCell *)cell
forRowAtIndexPath:(NSIndexPath *)indexPath
{
if( indexPath.row == 3 || indexPath.row == 4 || indexPath.row == 5 )
{
UILabel * label = (UILabel *)[cell viewWithTag:999];
NSRange range = [label.attributedText.string rangeOfString: @"®"];
if (range.length)
{
UIFont * font = [UIFont fontWithName:@"HelveticaNeue-Thin" size:12.0];
NSDictionary * attributes = @{
NSFontAttributeName: [font fontWithSize: 10],
NSBaselineOffsetAttributeName : @10
};
NSMutableAttributedString * string = [[NSMutableAttributedString alloc] initWithString: label.attributedText.string];
[string setAttributes: attributes range:range];
label.attributedText = string;
}
}
}
答案 2 :(得分:0)
tableView的单元格正在被回收。如果您在代码中分配文本,那么当单元格离开屏幕时它将会消失。
我要做的第一件事是在 cellForRowAtIndexPath 方法上分配文本。如果您只希望该单元格具有该文本,则可以将其转换为if语句:
if (indexPath.section==0 && indexPath.row==0){
cell.paymentLabel.attributedText = attributedString;
}
没有关于如何实现tableView的更多详细信息,我无能为力。