从自定义uitablecell视图中删除UIimage

时间:2011-05-20 09:29:47

标签: iphone uitableview

我想从某些表格单元格中删除IBOutlet UIimage:

我有一个自定义表格单元格,包括图像,标签,副标题......

cellIcon,cellHead,cellStandfirst

有些单元格没有图像,所以我希望标签和副标题向后延伸以填充图像留下的空间(正如标准UITable在没有自定义单元格类时的行为一样)

目前我正在打电话

[cell shortCell:cell.bounds.size.width];
来自tableViewController的

,它调用

- (void)shortCell:(float)myfloat; {
    [cellHead setFrame:CGRectMake(
        CELL_CONTENT_MARGIN, 
        3.0f, 
        myfloat - (CELL_CONTENT_MARGIN * 2), 
        24.0f)];
    [cellStandfirst setFrame:CGRectMake(
        CELL_CONTENT_MARGIN, 
        25.0f, 
        myfloat - (CELL_CONTENT_MARGIN * 2), 
        34.0f)];
}

工作正常,但我觉得默认的表视图必须删除图像而不是调整标签大小。

我尝试了

的变体
[cellIcon removeFromSuperview];

在单元格类中,

[cell.cellIcon remove];
在tableview控制器中

但是无法正常工作

是否可以从某些单元格中删除表格单元格图像,以便标签自动调整大小?

4 个答案:

答案 0 :(得分:1)

你试试:

cell.cellIcon = nil;

或者:

[cell setCellIcon:nil];

我不知道它会起作用,但你只是尝试。

答案 1 :(得分:0)

你可以尝试

cellIcon.hidden=YES;

属性这样做......

答案 2 :(得分:0)

子视图无法自动填充空白区域。您必须坚持使用当前的方法。

如果您要从cellIcon中移除空superview,则必须记住要重复使用这些单元格。因此,如果是nil

,则必须以编程方式重新初始化它

答案 3 :(得分:0)

使用此代码

if ( __what-test-is-needed__) {
    [cell cellIcon:@"your_image.png"];

} else {
    [cell cellIcon:nil];
    [cell shortCell:cell.bounds.size.width];
}

然后在细胞类

#define CELL_CONTENT_WIDTH 320.0f
#define CELL_CONTENT_MARGIN 10.0f

@implementation StoryCellViewController

- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier {

    self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
    if (self) {
        // Initialization code.
    }
    return self;
}



- (void)cellHead:(NSString *)_text;{
    cellHead.text = _text;
    //NSLog(@"Width: %f", self.bounds.size.width);
}

- (void)cellIcon:(NSString *)_text;{
    cellIcon.image = [UIImage imageNamed:_text];
}

- (void)cellStandfirst:(NSString *)_text;{
    cellStandfirst.text = _text;


}

- (void)shortCell:(float)myfloat; {
    // NSLog(@"Width: %f", self.bounds.size.width);
    // NSLog(@"Float: %f", myfloat);
    [cellHead setFrame:CGRectMake(
                               CELL_CONTENT_MARGIN, 
                               4.0f, 
                               myfloat - (CELL_CONTENT_MARGIN * 2), 
                               24.0f)];
    [cellStandfirst setFrame:CGRectMake(
                                    CELL_CONTENT_MARGIN, 
                                    26.0f, 
                                    myfloat - (CELL_CONTENT_MARGIN * 2), 
                                    34.0f)];
}

- (void)setSelected:(BOOL)selected animated:(BOOL)animated {

    [super setSelected:selected animated:animated];

    // Configure the view for the selected state.
}