Cocoa touch UILabel文本在更新时重叠?

Cocoa touch UILabel文本在更新时重叠?,cocoa-touch,Cocoa Touch,在我的应用程序中,我将文本标签的值从初始值0更改为增量,并在触摸事件中递增。有时,但并非始终,新值将覆盖在0上,这并不酷 以下是相关代码: UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath]; UILabel *label = (UILabel *)[cell viewWithTag:1000]; label.text = qtyString; 我尝试从视图中删除标签,然后添加另一个具有新值的标签,但这根本不会

在我的应用程序中,我将文本标签的值从初始值0更改为增量,并在触摸事件中递增。有时,但并非始终,新值将覆盖在0上,这并不酷

以下是相关代码:

UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
UILabel *label = (UILabel *)[cell viewWithTag:1000];
label.text = qtyString;
我尝试从视图中删除标签,然后添加另一个具有新值的标签,但这根本不会影响问题。当我将单元格(标签是表格单元格的一部分)从屏幕中滚动出来并返回时,标签显示正确。哦,我也试过了

[tableView reloadData];
它工作得更好,但如果我选择一个单元格,然后在它高亮显示时滚动,它会在该单元格上弹出


请帮助:(

在您的UILabel选项下,取消选中“不透明”,这将修复它。

更改不透明不会改变它,尽管这是合乎逻辑的。如果给标签一个精确的高度,您可以做什么。。此高度将匹配您的井高。如果您使用

  • (CGFloat)tableView:(UITableView*)tableView行高度索引路径:(NSIndexPath*)索引路径
    { return 80;//返回浮点值,该浮点值将用于指定行索引处的单元格行高度
    }

就像我当时做的那样,将标签的高度也设为80,这将阻止它。

imho,解决这个问题的最佳方法是在:

  UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
    cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:CellIdentifier] autorelease];
}else {
    NSArray *cellSubs = cell.contentView.subviews;
    for (int i = 0 ; i < [cellSubs count] ; i++) {
        [[cellSubs objectAtIndex:i] removeFromSuperview];
    }
}
UITableViewCell*cell=[tableView dequeueReusableCellWithIdentifier:CellIdentifier];
如果(单元格==nil){
cell=[[[UITableViewCell alloc]initWithFrame:CGRectZero reuseIdentifier:CellIdentifier]autorelease];
}否则{
NSArray*cellSubs=cell.contentView.subview;
对于(int i=0;i<[cellSubs计数];i++){
[[cellSubs objectAtIndex:i]从SuperView中移除];
}
}

希望这能有所帮助。

我也遇到了UILabel文本变得混乱的问题,我只是阅读了其他解决方案,转到IB,然后选中“绘图前清除上下文”,这就解决了问题!

在我的情况下,将不透明改为无解决了更新UILabel.text的问题 我在awakeFromNib中创建uilabel。

检查“清除图形上下文”是否适用于我,我一开始不小心取消了它的选择~~