1

我只是想通过让表格中的所有单元格都说“嗨”来测试自定义单元格,但它不起作用......单元格都是空白的。似乎在我可以设置标签文本之前调用了 TheCell 类......我不知道该怎么做。

细胞.h

#import <UIKit/UIKit.h>

@interface TheCell : UITableViewCell

@property (nonatomic, strong) IBOutlet UILabel *arrivalLabel;

@end

细胞.m

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

    self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
    if (self) {

        self.arrivalLabel.frame = CGRectMake(0, 0, 320, 30);
        [self.contentView addSubview:self.arrivalLabel];
    }
    return self;
}

表视图控制器.m

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier = @"anIdentifier";

    TheCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    cell = [[TheCell alloc] init];
    cell.arrivalLabel.text = @"hi";

    return cell;
}
4

2 回答 2

3

你有几个问题。您正在调用init单元类的方法。您应该initWithStyle:reuseIdentifier:改为调用该方法。

如果调用dequeue...返回,您还应该只分配单元格nil

然后您需要确保您的单元格的initWithStyle:reuseIdentifier:方法正在为该arrivalLabel属性创建标签实例。

TheCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (!cell) {
    cell = [[TheCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
}

cell.arrivalLabel.text = @"hi";

另一个大问题是你的细胞的initWithStyle:reuseIdentifier:方法。你永远不会创建标签。

- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier {
    self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
    if (self) {
        _arrivalLabel = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 320, 30)];
        [self.contentView addSubview:_arrivalLabel];
    }
    return self;
}
于 2013-11-11T01:28:03.600 回答
2

这是不正确的:

TheCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    cell = [[TheCell alloc] init];

您必须执行以下操作:

TheCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (!cell) {
    cell = [[TheCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
}
于 2013-11-11T01:30:22.163 回答