Ios 自定义UITableViewCell未显示在表视图上

Ios 自定义UITableViewCell未显示在表视图上,ios,uitableview,Ios,Uitableview,我正在尝试创建自定义的UITableViewCell。代码如下: class ImportedContactsTVCell: UITableViewCell { var nameLabel = UILabel(frame: CGRect(x: 0, y: 0, width: 100, height: 20)) var emailLabel = UILabel(frame: CGRect(x: 0, y: 0, width: 100, height: 20)) var phoneLabel =

我正在尝试创建自定义的
UITableViewCell
。代码如下:

class ImportedContactsTVCell: UITableViewCell {

var nameLabel = UILabel(frame: CGRect(x: 0, y: 0, width: 100, height: 20))
var emailLabel = UILabel(frame: CGRect(x: 0, y: 0, width: 100, height: 20))
var phoneLabel = UILabel(frame: CGRect(x: 0, y: 0, width: 100, height: 20))

override func awakeFromNib() {
    super.awakeFromNib()
    // Initialization code

    nameLabel.setTranslatesAutoresizingMaskIntoConstraints(false)
    emailLabel.setTranslatesAutoresizingMaskIntoConstraints(false)
    phoneLabel.setTranslatesAutoresizingMaskIntoConstraints(false)

    contentView.addSubview(nameLabel)
    contentView.addSubview(emailLabel)
    contentView.addSubview(phoneLabel)

    var viewsDict = [

        "nameLabel" : nameLabel,
        "emailLabel" : emailLabel,
        "phoneLabel" : phoneLabel
    ]

    contentView.addConstraints(NSLayoutConstraint.constraintsWithVisualFormat("V:|-[nameLabel]-[emailLabel]-[phoneLabel]-|", options: NSLayoutFormatOptions( 0 ), metrics: nil, views: viewsDict))
    contentView.addConstraints(NSLayoutConstraint.constraintsWithVisualFormat("H:|-[nameLabel]-|", options: NSLayoutFormatOptions( 0 ), metrics: nil, views: viewsDict))
    contentView.addConstraints(NSLayoutConstraint.constraintsWithVisualFormat("H:|-[emailLabel]-|", options: NSLayoutFormatOptions( 0 ), metrics: nil, views: viewsDict))
    contentView.addConstraints(NSLayoutConstraint.constraintsWithVisualFormat("H:|-[phoneLabel]-|", options: NSLayoutFormatOptions( 0 ), metrics: nil, views: viewsDict))
}

override func setSelected(selected: Bool, animated: Bool) {
    super.setSelected(selected, animated: animated)

    // Configure the view for the selected state
}
}
我使用它的方式如下:

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {

    var cell = ImportedContactsTVCell()
    cell.nameLabel.text = "A"
    cell.emailLabel.text = "B"
    cell.phoneLabel.text = "C"

    return cell
}
它们不是在故事板上创建的原型单元。请问我错过了什么


提前感谢。

awakeFromNib
不会为完全用代码创建的单元格调用。您应该重写
initWithStyle:reuseIdentifier:
,并将代码放在那里。您仍然可以使用ImportedContactsTVCell()实例化单元格,因为您不需要任何样式选择。如果您使用的单元格不止几个,那么应该使用正常的出列机制来创建单元格。

故事板中必须有原型单元格。如果不重用,就无法创建表视图单元


参考

我个人觉得制作一个包含单元格接口的XIB文件更容易,同时还可以创建一个
UITableViewCell
子类,该子类提供对XIB上标签的访问。然后在您的
cellForRowAtPath:
中,您只需将单元格设置为与自定义单元格相等(此处简化)并设置数据。运行它时会发生什么?只有空白单元格吗?@Mikael是的。只有纯白色空白单元格。应用程序是否运行cellForRowAtIndexPath?是的。这是不正确的。您可以在xib中创建单元格,也可以完全在代码中创建单元格。第一条语句不正确。故事板上不需要原型单元,但是手动创建单元也不是一个好主意。最好在
viewDidLoad