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