UITableViewCell子视图的IBOutlet是(NULL)

时间:2014-03-25 19:29:10

标签: ios objective-c uitableview iboutlet

我在xib中定义了自定义UITableViewCell。它在内容视图中有两个视图,一个标签和一个文本视图。

在我的表视图控制器中,使用

JJDTextInputCell *cell = [[SDLTextInputCell alloc] init];

JJDTextInputCell *cell = [tableView dequeueReusableCellWithIdentifier:@"TextInputCell" forIndexPath:indexPath];

IBOutlet为空,因此表格视图不显示我尝试使用

显示的默认文本或任何文本
cell.descriptionLabel.text = @"foo";

初始化使用界面构建器创建的自定义UITableView单元的正确方法是什么?

3 个答案:

答案 0 :(得分:3)

AFAIK,有两种方法可以使表格单元格出列,您可以在文档中找到它们here。在Creating Table View Cells下找到它们。您正在使用dequeueReusableCellWithIdentifier:forIndexPath:,它始终返回一个有效的单元格,但您需要使用registerNib:forCellReuseIdentifier:函数与此配对。您必须注册该课程,然后您将获得一个有效的单元格。查看this问题以供参考。

答案 1 :(得分:2)

如果您将XIB用于自定义单元格,则应使用

[self.tableView registerNib:[UINib nibWithNibName:@"TableViewCell" bundle:nil] forCellReuseIdentifier:"CellIdentifier"];

用于注册单元格而不是

[self.tableView registerClass:[TableViewCell class] forCellReuseIdentifier:"CellIdentifier"];

答案 2 :(得分:1)

从xib文件初始化它们。

JJDTextInputCell *cell = [[[NSBundle mainBundle] loadNibNamed:@"JJDTextInputCell" owner:self options:nil] objectAtIndex:0];