0

我在 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;
 }
4

1 回答 1

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 来实例化标签。

于 2013-05-16T15:41:21.600 回答