我有这段代码:
class Cell:UITableViewCell {
var fullName:UILabel! = UILabel()
var userImage:UIImage! = UIImage()
override func awakeFromNib() {
super.awakeFromNib()
println("wake")
fullName.setTranslatesAutoresizingMaskIntoConstraints(false)
contentView.addSubview(fullName)
let imageView = UIImageView(image: userImage)
contentView.addSubview(imageView)
var viewsDict = [
"fullName" : fullName,
"userImage" : userImage
]
contentView.addConstraints(NSLayoutConstraint.constraintsWithVisualFormat("V:|-[userImage(10)]", options: NSLayoutFormatOptions(0), metrics: nil, views: viewsDict))
contentView.addConstraints(NSLayoutConstraint.constraintsWithVisualFormat("H:|-[fullName]-[userImage(10)]-|", options: NSLayoutFormatOptions(0), metrics: nil, views: viewsDict))
}
}
viewDidLoad中:
var tableView = UITableView()
tableView.frame = CGRectMake(0, 0, self.view.frame.width, self.view.frame.height-64)
tableView.delegate = self
tableView.dataSource = self
var cell = Cell.self
tableView.registerClass(cell, forCellReuseIdentifier: "cell")
self.view.addSubview(tableView)
的cellForRowAtIndexPath:
let cell:Cell = tableView.dequeueReusableCellWithIdentifier("cell", forIndexPath: indexPath) as Cell
cell.fullName.text = testarray.objectAtIndex(indexPath.row) as? String
return cell
当我执行代码时,我无法在单元格中看到标签,即使在类Cell中没有println(" wake")也没有执行。
答案 0 :(得分:0)
awakeFromNib
。你没有这样做,因为一个班级已经注册。
您需要将该代码移动到出口方法的UITableView文档中提到的initWithStyle:reuseIdentifier
方法:
如果您为指定的标识符注册了类,并且必须创建新的单元格,则此方法通过调用其
加载单元格对象initWithStyle:reuseIdentifier:
方法来初始化该单元格。对于基于nib的单元格,此方法从提供的nib文件
答案 1 :(得分:0)
您的自定义UITableViewCell
应如下所示:
class ListTableViewCell: UITableViewCell {
var lblTitle = UILabel()
override init(style: UITableViewCellStyle, reuseIdentifier: String!) {
super.init(style: style, reuseIdentifier: reuseIdentifier)
lblTitle = UILabel(frame: CGRectZero)
lblTitle.font = UIFont(name: "HelveticaNeue-Light", size: 18.0)
lblTitle.textAlignment = NSTextAlignment.Right
lblTitle.numberOfLines = 1
lblTitle.backgroundColor = UIColor.clearColor()
lblTitle.textColor = UIColor(red: 130/255, green: 137/255, blue: 141/255, alpha: 1.0)
self.contentView.addSubview(self.lblTitle)
// 130 137 141
self.separatorInset = UIEdgeInsets(top: 0, left: 100, bottom: 0, right: -100)
}
required init(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
override func layoutSubviews() {
var marginX = CGFloat(30.0)
var marginY = CGFloat(0.0)
var width = CGFloat(320)
var height = self.contentView.frame.size.height
self.lblTitle.frame = CGRectMake(marginX, marginY, width, height)
}
}
这就是您在cellForRowAtIndexPath
数据源的UITableView
方法中创建单元格的方法。
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
var cell:ListTableViewCell! = tableView.dequeueReusableCellWithIdentifier(self.cellIdentifier) as? ListTableViewCell
if (cell == nil) {
cell = ListTableViewCell(style: UITableViewCellStyle.Default, reuseIdentifier: self.cellIdentifier)
}
cell.lblTitle.text = self.listItems[indexPath.row]
return cell
}