元素在UItableviewCell SubClass之后不显示

时间:2015-02-18 07:59:01

标签: ios objective-c uitableview

我正在使用Custome uitableview单元来避免性能下降。

这是我填充表格单元格的方式:

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

    NSString *reuseIdentifier = [NSString stringWithFormat:@"cell_%ld",(long)indexPath.row];

    SubcategoryTableViewCell * sctvCell = [tableView dequeueReusableCellWithIdentifier:reuseIdentifier];

    if (sctvCell == nil) {
        sctvCell= [[SubcategoryTableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:reuseIdentifier];

    }
    sctvCell.contentView.translatesAutoresizingMaskIntoConstraints = NO;

        [sctvCell.label setText:appRecord.title];
    return sctvCell;

}

在我的" SubcategoryTableViewCell.h"将IBOutlet标题添加到单元格中的项目:

@property (weak, nonatomic) IBOutlet UILabel *mood_count_lbl;

并在我的" SubcategoryTableViewCell.m" class:

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

    [super setSelected:selected animated:animated];

}
-(id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier {
    self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];

    if(self){

        self.contentView.backgroundColor = [UIColor clearColor];
        UIView *whiteRoundedCornerView = [[UIView alloc] initWithFrame:CGRectMake(10,10,300,150)];
        whiteRoundedCornerView.backgroundColor = [UIColor whiteColor];
        whiteRoundedCornerView.layer.masksToBounds = NO;
        whiteRoundedCornerView.layer.cornerRadius = 3.0;
        [whiteRoundedCornerView.layer setShadowColor:[UIColor grayColor].CGColor];
        whiteRoundedCornerView.layer.shadowOffset = CGSizeMake(-1, 1);
        whiteRoundedCornerView.layer.shadowOpacity = 0.2;  
        [self.contentView addSubview:whiteRoundedCornerView];
        [self.contentView sendSubviewToBack:whiteRoundedCornerView];



        return self;

    }

上面的代码注释显示在单元格中,除了我和

的边界和阴影

在客户细胞中制作。

单元格中的元素也正确连接到custome cell。

问题可以追溯到动态" reuseIdentifier"我做了什么?

如果我将其更改回此代码,一切都运行良好,没有客户单元定制和子类化:

NSString *reuseIdentifier = @"PlaceholderCell2";
UITableViewCell * sctvCell = [tableView dequeueReusableCellWithIdentifier:reuseIdentifier];

if (sctvCell == nil) {
    sctvCell= [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:reuseIdentifier];

}

即使我改变了我的代码:

self.contentView.backgroundColor = [UIColor clearColor];
UIView *whiteRoundedCornerView = [[UIView alloc] initWithFrame:CGRectMake(10,10,300,150)];
whiteRoundedCornerView.backgroundColor = [UIColor whiteColor];
whiteRoundedCornerView.layer.masksToBounds = NO;
whiteRoundedCornerView.layer.cornerRadius = 3.0;
[whiteRoundedCornerView.layer setShadowColor:[UIColor grayColor].CGColor];
whiteRoundedCornerView.layer.shadowOffset = CGSizeMake(-1, 1);
whiteRoundedCornerView.layer.shadowOpacity = 0.2;  
[self.contentView addSubview:whiteRoundedCornerView];
UILabel *_lblTitle = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 100, 100)];
[self.contentView addSubview:_lblTitle];
[self.contentView sendSubviewToBack:whiteRoundedCornerView];

现在出现了新标签。

我正在检查单元格名称和类,一切正常。

enter image description here

我的" SubCategoryViewController.m"代码:http://paste2.org/_nCY8zF9w

my" SubcategoryTableViewCell.m"代码:http://paste2.org/_h9AJnzcV

my" SubcategoryTableViewCell.h"代码:http://paste2.org/_vUJjEcXV

1 个答案:

答案 0 :(得分:2)

您要将文字设置为sctvCell.label,这个标签是什么?您还有label标签值为1.您要使用哪个标签?

假设您要将标签与标签和函数initWithStyle:reuseIdentifier一起使用,您应该在此函数中添加标签,然后将文本设置为此标签。 reuseIdentifier是动态的,应该是静态的。您的单元格只需要一个标识符。

假设您要使用IBoutlet标签,那么您将从xib或storyboard加载单元格,就像iOS 8一样,如果您使用reuseIdentifier在表格中设置了单元格,则从故事板中加载的单元格将始终有价值,所以它不能为零。您可能希望将自定义代码添加到单元子类中的awakeFromNib方法。