我有UITableViewCell
类,其中包含customLabel和imageView。当我尝试在主UITableViewController
中加载它们时,没有任何反应。
主UITableViewController
包含:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *CellIdentifier = @"Cell";
UserTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];
[cell.customButton setTitle:@"Test" forState:UIControlStateNormal];
PFUser *user = [self.members objectAtIndex:indexPath.row];
cell.customLabel.text = [user objectForKey:@"Name"];
PFFile *userImage = [user objectForKey:@"Image"];
[userImage getDataInBackgroundWithBlock:^(NSData *data, NSError *error) {
if (!error) {
cell.imageView.image = [UIImage imageWithData:data];
[cell setNeedsLayout];
}
}];
return cell;
}
UserTableViewCell
包含:
- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier {
self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
if (self) {
self.customLabel = [[UILabel alloc] initWithFrame:CGRectMake(3, 5, 165, 30)];
self.customLabel.font = [UIFont systemFontOfSize:14];
self.customLabel.textColor = [UIColor blackColor];
self.customLabel.backgroundColor = [UIColor clearColor];
self.customLabel.highlightedTextColor = [UIColor whiteColor];
self.customLabel.adjustsFontSizeToFitWidth = YES;
[self.contentView addSubview:self.customLabel];
self.customButton = [[UIButton buttonWithType:UIButtonTypeCustom] initWithFrame:CGRectMake(180, 5, 40, 30)];
[self.customButton addTarget:self action:@selector(logButtonRow:) forControlEvents:UIControlEventTouchUpInside];
[self.contentView addSubview:self.customButton];
self.imageView2 = [[UIImageView alloc] initWithFrame:CGRectMake(60, 1, 50, 50)];
[self.contentView addSubview:self.imageView2];
}
return self;
}
我错过了什么吗?我已将原型单元标识符设置为" Cell"和UserTableViewCell
的自定义类(这是必需的吗?)
答案 0 :(得分:1)
看来您在IB中设置了单元格,如果是这样,initWithStyle:reuseIdentifier:将不会被调用。如果要在代码中向单元格添加UI元素,则应该实现initWithCoder。或者,您可以注册您的类(在表视图控制器的viewDidLoad中),这将导致initWithStyle:reuseIdentifier:被调用(IB中的单元格将是多余的,因为表视图将从您的类定义中获取单元格)。
[self.tableView registerClass:[UserTableViewCell class] forCellReuseIdentifier:@"Cell"];
答案 1 :(得分:0)
第一次调用时,您需要分配并初始化您的单元格:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *CellIdentifier = @"Cell";
UserTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];
if(cell == nil)
{
// initialize your cell here
cell = ...
}
...