自定义UITableViewCell - 没有任何可见

时间:2014-03-12 00:06:24

标签: ios uitableview xcode5

我有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的自定义类(这是必需的吗?)

2 个答案:

答案 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 = ...
  }

...