将 UILabel 添加到 CellForRow 中的 UIImageView

Posted

技术标签:

【中文标题】将 UILabel 添加到 CellForRow 中的 UIImageView【英文标题】:Adding UILabel to UIImageView in CellForRow 【发布时间】:2013-05-16 15:34:28 【问题描述】:

我在 StoryBoard“CategoryCell”中有一个 customCell,我有 UIImageView 和单元格,它也是单元格的一部分,也绑定在 StoryBoard 中。 UIImageView 用纯黄色填充。我打算给这个纯黄色图像添加一个标签,标签因单元格而异。

下面的代码最初运行良好,但是当我滚动 tableView 时,我看到图像中的标签变得混乱,就像它试图在文本顶部写入新文本一样。我认为它再次点击 cellForRow 并且它正在添加新标签,我怎样才能让它不在旧标签之上创建新标签?

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath


if([tableView isEqual:wordsTableView])

    CategoryCell *cell = [CategoryTableView dequeueReusableCellWithIdentifier:@"CategoryCellIdentifier" forIndexPath:indexPath];
    if(!cell)
        cell = [[CategoryCell alloc] initWithStyle:UITableViewStylePlain reuseIdentifier:@"CategoryCellIdentifier"];

    NSString *text = [[theCategories objectAtIndex:indexPath.row] uppercaseString];

    //Add label now
    catLabel = [[UILabel alloc] initWithFrame:CGRectMake(10, 10, 40, 20)];
    catLabel.text = text;
    [cell.codeImageView addSubview:catLabel];

   return cell;
 

【问题讨论】:

【参考方案1】:

你可以给标签一个标签,并用它来检查它是否存在,然后再创建它:

UILabel *catLabel = [cell.codeImageView viewWithTag:100];
if (nil == catLabel) 
    catLabel = [[UILabel alloc] initWithFrame:CGRectMake(10, 10, 40, 20)];
    catLabel.tag = 100;
    [cell.codeImageView addSubview:catLabel];

catLabel.text = text;

虽然如果它变得更复杂,我可能会考虑子类化 UITableViewCell 并使用 xib 来实例化标签。

【讨论】:

它有效,谢谢 - 我知道它与标签有关。顺便说一句,CategoryCell 是 UITableViewCell 的子类。

以上是关于将 UILabel 添加到 CellForRow 中的 UIImageView的主要内容,如果未能解决你的问题,请参考以下文章

以编程方式将 UILabel 添加到 CollectionViewCells

如何将 UILabel 添加到 UIScrollView?

以编程方式将点击手势添加到 UILabel

以编程方式将 UILabel 添加到 UICollectionViewCell

以编程方式将 UILabel 添加到工具栏

UISlider - 将 UILabel 添加到最小/最大 UIImageView?