-1

嗨,我有一个UITableView,我在其中使用包含图像的自定义单元格。当我重新加载UITableView时,它重新加载就可以了,但是图像没有被删除,我也将它设置为 nil 并尝试了 removeFromSuperView 但没有运气。

CustomCell *cell = (CustomCell *)[tableView dequeueReusableCellWithIdentifier:identity];
if (cell == nil) {
    cell = [[CustomCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:identity DefaultsArray:defaultColAndSpacesDict];

    if ([tableView respondsToSelector:@selector(setSeparatorInset:)]) {
        [tableView setSeparatorInset:UIEdgeInsetsZero];
    }

    cell.selectionStyle=UITableViewCellSelectionStyleNone;
}

if([[dtaDictionary allKeys] count]!=0)
{
    [cell.contentView clearsContextBeforeDrawing];

    if([defaultsArray containsObject:@"Note"])
    {

        NSString *patNotes=[[currRow objectForKey:@"pat_notes"] stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]];
        NSString *appNotes=[[currRow objectForKey:@"Notes"] stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]];

        if((![patNotes isEqualToString:@""] && patNotes!=nil) || (![appNotes isEqualToString:@""] && appNotes!=nil))
        {
            [cell.Note setBackgroundImage:[UIImage imageNamed:@"notes-green.png"] forState:UIControlStateNormal];
            [cell.Note setBackgroundImage:[UIImage imageNamed:@"notes-green.png"] forState:UIControlStateHighlighted];
            [cell.Note addTarget:self action:@selector(showNote:) forControlEvents:UIControlEventTouchUpInside];
        }
        else
        {
                cell.Note.imageView.image=nil;
        }
    }

我调试了程序,它为它分配了 nil 。我也尝试了 ImageView 的 removeFromSuperView 。可能是什么问题呢?

注意: Cell.Note 是一个 UIButton

4

3 回答 3

1

根据您的代码,您已将背景图像设置为按钮以控制状态。如果要更改背景图像或清除图像,则必须再次为按钮设置背景图像。

[cell.Note setBackgroundImage:[UIImage imageNamed:@"changedImage.png"] forState:UIControlStateNormal];

[cell.Note setBackgroundImage:[UIImage imageNamed:@"changedImage.png"] forState:UIControlStateHighlighted];

否则将 nil 设置为背景图像,或者在需要时隐藏。

于 2013-10-22T06:42:39.363 回答
1

在 if 条件下,您首先没有将图像分配到 imageView 中。

例如 :

   if((![patNotes isEqualToString:@""] && patNotes!=nil) || (![appNotes isEqualToString:@""] && appNotes!=nil))
    {

       cell.Note.imageView.image=[UIImage imageNamed:@"notes-green.png"];
         //Rest of Code

    }

   else
    {
          cell.Note.ImageView.image=nil ;
    }

上述情况将完美运行,因为现在您正在为 imageView 分配一些图像。

但是在您的情况下,您通过调用自定义方法 setBackgroundImage: 来分配图像。在这种情况下,它被分配给 setBackgroundImage: 方法中使用的其他视图。

因此,请考虑以下代码:

   if((![patNotes isEqualToString:@""] && patNotes!=nil) || (![appNotes isEqualToString:@""] && appNotes!=nil))
    {
        [cell.Note setBackgroundImage:[UIImage imageNamed:@"notes-green.png"] forState:UIControlStateNormal];
       //Rest of Code
    }

     else
    {
        [cell.Note setBackgroundImage:nil forState:UIControlStateNormal];

    }

希望清楚!!!

于 2013-10-22T07:25:46.253 回答
-1

尝试添加[cell.Note setNeedsDisplay]

于 2013-10-22T06:26:35.063 回答