我正在尝试创建一个自定义单元格,该单元格仅应用于某个部分中的一个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上,我连接了所有内容:
现在这就是我在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
}
我做错了什么?在此先感谢您的帮助。
答案 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