我正在使用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];
现在出现了新标签。
我正在检查单元格名称和类,一切正常。
我的" SubCategoryViewController.m"代码:http://paste2.org/_nCY8zF9w
my" SubcategoryTableViewCell.m"代码:http://paste2.org/_h9AJnzcV
my" SubcategoryTableViewCell.h"代码:http://paste2.org/_vUJjEcXV
答案 0 :(得分:2)
您要将文字设置为sctvCell.label
,这个标签是什么?您还有label
标签值为1.您要使用哪个标签?
假设您要将标签与标签和函数initWithStyle:reuseIdentifier
一起使用,您应该在此函数中添加标签,然后将文本设置为此标签。 reuseIdentifier
是动态的,应该是静态的。您的单元格只需要一个标识符。
假设您要使用IBoutlet
标签,那么您将从xib或storyboard加载单元格,就像iOS 8一样,如果您使用reuseIdentifier在表格中设置了单元格,则从故事板中加载的单元格将始终有价值,所以它不能为零。您可能希望将自定义代码添加到单元子类中的awakeFromNib
方法。