自定义UITableViewCell不显示标签

时间:2014-07-05 11:25:03

标签: ios objective-c uitableview uilabel

我正在努力解决在尝试创建自定义UITableViewCell时遇到的问题。

我在SGTableViewCell中将UITableViewCell子类化,并将其添加到故事板中的原型单元格中。

Storyboard view of prototype cell

如您所见,标签已连接 enter image description here

并正确设置了单元标识符 enter image description here

然后我将标签链接到SGTableViewCell.h,就像这样

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

在.m文件中我有这段代码

- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier {
    self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
    if (self) {
        self.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
        [self addGestureRecognizer:recognizer];

        self.nameLabel = [[UILabel alloc] init];
        _checkView = [[UIView alloc] initWithFrame:CGRectNull];
        _checkView.backgroundColor = kGreen;
        _checkView.alpha = 0.0;
        [self addSubview:_checkView];
        self.nameLabel.text = @"Hello";
        }
    return self;
 }

但是当我在使用此代码的tableview中使用此单元格时

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

    Episode *episode = [self.selectedSeason.episodeList objectAtIndex:indexPath.row];

    SGTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"Episode"];

    UIView *selectionColor = [[UIView alloc] init];
    selectionColor.backgroundColor = kSelectionGrey;

    cell.selectedBackgroundView = selectionColor;
    cell.backgroundColor = kBackgroundGrey;

    cell.nameLabel.text = episode.name;
    NSLog(@"%@", cell.nameLabel.text);
    cell.nameLabel.textColor = [UIColor redColor];

    return cell;
}

我根本没有文字。

我尝试记录每个单元格中每个标签的文本,它给了我正确的文本。 我尝试以编程方式为自定义单元格设置不同的公开指示符,但它确实已更改,因此所有内容都已分配并正常工作,但标签未显示。 老实说,我不知道问题是什么。我错过了什么? 谢谢

部分解决:

好的,我尝试在一个空项目上做同样的事情,一切都完美无缺,所以我再次检查了我的项目并发现了这一行

[self.tableView registerClass:[SGTableViewCell class] forCellReuseIdentifier:@"Episode"];

看到这个空项目没有必要我评论了这一行,一切都开始工作了。

我现在唯一的问题是,如果我不使用此行,我不能按预期使用自定义单元格。事实上,我的自定义单元格是使用平移手势识别器可以移动的,但是没有将我的自定义类注册到tableview看起来像滑动不起作用。

对不起麻烦,好像我再搞砸了:/

2 个答案:

答案 0 :(得分:1)

您不应该alloc init在故事板中创建的标签,它已经自动分配。执行self.nameLabel = [[UILabel alloc] init];时,重置self.nameLabel属性以指向新的空内存位置,而不是指向故事板中创建的标签,因此您可以更改其text属性并查看导致NSLog但不在故事板中,因为它没有在故事板中引用该标签。

尝试从initWithStyle方法中删除所有初始化(以确保没有任何内容覆盖它,例如您创建的子视图),以及与cellForRowAtIndexPath方法中的标签相关的所有内容(同样的原因),并尝试self.nameLabel.text = @"Test text"方法中的cellForRowAtIndexPath之类的简单分配,它应该可以正常工作。然后添加所有其他初始化。

是的,不要忘记输入您的小区重用标识符" Episode"在故事板中。

答案 1 :(得分:0)

请确保:

  1. 已将委托和数据源链接到tablview所在的视图。

  2. 拥有该视图工具UITableViewControllerUITableViewDelegate(我非常确定这两者都是这些)。

  3. 实施您似乎已经完成的必要方法。您需要row size, section size, and the add cell方法

  4. 更新链接到您的tableview的数组后,请致电[tableView reloadData]

  5. 请看一下这个链接:Tutorial to create a simple tableview app