使用SWIFT在Tableview中设置自定义单元格

时间:2015-01-19 17:07:08

标签: ios uitableview swift

我正在尝试创建一个自定义单元格,该单元格仅应用于某个部分中的一个CELL。

所以创建一个名为buttonsTableViewCell的自定义cass,它几乎是空的,只有一个名为weightLabel()的标签代码如下:

class buttonsTableViewCell: UITableViewCell {

    @IBOutlet weak var weightLabel: UILabel!
    override func awakeFromNib() {
        super.awakeFromNib()
        // Initialization code
    }

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

        // Configure the view for the selected state
    }

}

在Main.storyboard上,我连接了所有内容:

Setting the custom class Connect the label to the class Setting the identifier

现在这就是我在viewcontroller类中尝试做的事情,它控制着包含单元格的Tableview。

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

 var cell = tableView.dequeueReusableCellWithIdentifier("Cell",   forIndexPath: indexPath) as UITableViewCell
          cell.textLabel?.text = "Testing"

if indexPath.row == 1 { // So it only changes this cell
  cell = tableView.dequeueReusableCellWithIdentifier("buttonsCell", forIndexPath: indexPath) as buttonsTableViewCell

  cell.weightLabel?.text = "Weight" // ERROR UITableViewCell does not have a member named 'weightLabel'
}

 return cell

}

我做错了什么?在此先感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

Swift是具有类型推断的静态类型语言。因此,当您首先在if条件之外指定cell的值时,单元格变量的类型将设置为正常UITableViewCell
只需使用其他变量名称,如

if indexPath.row == 1 { 
    var buttonCell = tableView.dequeueReusableCellWithIdentifier("buttonsCell", forIndexPath: indexPath) as buttonsTableViewCell

    buttonCell.weightLabel?.text = "Weight" 
    return buttonCell
}

var cell = tableView.dequeueReusableCellWithIdentifier("Cell",   forIndexPath: indexPath) as UITableViewCell
cell.textLabel?.text = "Testing"

return cell