我的错误出现在下面的第一个代码中,在交换机的情况2中。
cell.pointsNumber.text = "toto"
Xcode错误:'UITableViewCell'类型的值没有成员'pointsNumber'
我无法访问我的班级PerformancesViewCell
来填写标签。
我的演员不起作用,我的单元格仍然是UITableViewCell
而不是PerformancesViewCell
。
提前感谢您的帮助;)
细胞标识符:
let thirdCellIdentifier = "thirdCell"
的TableView:
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell
{
var cell: UITableViewCell!
switch indexPath.row
{
case 0:
cell = tableViewProfil.dequeueReusableCellWithIdentifier(firstCellIdentifier, forIndexPath: indexPath) as UITableViewCell
cell.backgroundView = nil
cell.backgroundColor = UIColor.clearColor()
break;
case 1:
cell = tableViewProfil.dequeueReusableCellWithIdentifier(secondCellIdentifier, forIndexPath: indexPath) as! DivisionsViewCell
break;
case 2:
cell = tableViewProfil.dequeueReusableCellWithIdentifier(thirdCellIdentifier, forIndexPath: indexPath) as! PerformancesViewCell
cell.pointsNumber.text = "toto"
case 3:
cell = tableViewProfil.dequeueReusableCellWithIdentifier(fourthCellIdentifier, forIndexPath: indexPath) as! ChampionsViewCell
break;
case 4:
cell = tableViewProfil.dequeueReusableCellWithIdentifier(fifthCellIdentifier, forIndexPath: indexPath) as UITableViewCell
break;
default:
cell = tableViewProfil.dequeueReusableCellWithIdentifier(fifthCellIdentifier, forIndexPath: indexPath) as UITableViewCell
break;
}
return cell
}
CustomCell:
import UIKit
class PerformancesViewCell: UITableViewCell
{
@IBOutlet weak var pointsNumber: UILabel!
@IBOutlet weak var challengesSucceed: UILabel!
@IBOutlet weak var bestPosition: UILabel!
@IBOutlet weak var averagePosition: UILabel!
@IBOutlet weak var challengeCreation: UILabel!
override func awakeFromNib()
{
super.awakeFromNib()
}
}
答案 0 :(得分:9)
问题在于这一行:
var cell: UITableViewCell!
您将单元格声明为UITableViewCell的类型。因此,错误表明UITableViewCell
没有名为pointsNumber
的成员。
更改该行:
var pCell = tableView.dequeueReusableCellWithIdentifier(thirdCellIdentifier, forIndexPath: indexPath) as! PerformancesViewCell
pCell.pointsNumber.text = "toto"
由于您使用的是不同类型的单元格并使用开关来区分它们,因此您需要将新创建的单元格(pCell)分配回开关盒本身的单元格。
cell = pCell
答案 1 :(得分:1)
我同意@Midhun MP的回答。一般来说,你应该配置你的自定义tableviewcell类,并在每种情况下返回它们。但是如果你想在switch func之外返回一个单元格,你可以这样做:< / p>
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell
{
var cell: UITableViewCell!
switch indexPath.row
{
case 0:
cell = tableViewProfil.dequeueReusableCellWithIdentifier(firstCellIdentifier, forIndexPath: indexPath) as UITableViewCell
cell.backgroundView = nil
cell.backgroundColor = UIColor.clearColor()
break;
case 1:
cell = tableViewProfil.dequeueReusableCellWithIdentifier(secondCellIdentifier, forIndexPath: indexPath) as! DivisionsViewCell
break;
case 2:
let performancesViewCell = tableViewProfil.dequeueReusableCellWithIdentifier(thirdCellIdentifier, forIndexPath: indexPath) as! PerformancesViewCell
performancesViewCell.pointsNumber.text = "toto"
cell = performancesViewCell
case 3:
cell = tableViewProfil.dequeueReusableCellWithIdentifier(fourthCellIdentifier, forIndexPath: indexPath) as! ChampionsViewCell
break;
case 4:
cell = tableViewProfil.dequeueReusableCellWithIdentifier(fifthCellIdentifier, forIndexPath: indexPath) as UITableViewCell
break;
default:
cell = tableViewProfil.dequeueReusableCellWithIdentifier(fifthCellIdentifier, forIndexPath: indexPath) as UITableViewCell
break;
}
return cell
}
答案 2 :(得分:0)
我建议删除var
的{{1}}声明,而不是使用
cell
每个案例。只需换出每个的正确类和标识符。
此外,请确保使用“属性”检查器中的原型单元格在故事板中定义每个自定义单元格类型,并且所有单元格都具有if indexPath.row==0 {
let cell:MyCustomTVC=self.myTableView.dequeueReusableCellWithIdentifier("myCustomTVC") as! MyCustomTVC
cell.myCustomLabel.text="asdf"
return cell
}
答案 3 :(得分:-1)
此问题不是由于您的代码,而是由于更改了视图控制器的类名而发生的。
Xcode还不够智能,因此,解决方案是删除崩溃的视图控制器,并删除其类并创建一个新的视图控制器并向其中添加新文件!
花了我几天时间来修复它。