【问题标题】:Issue with Swift subclassing a classSwift 子类化类的问题
【发布时间】:2017-07-31 05:16:16
【问题描述】:

我有一个像这样创建的表格视图单元格,其中代码崩溃:

let cell = tableView.dequeueReusableCell(withIdentifier: "reuseIdentifier") as! TestedViewCell;
cell.delegate = self;

我有这样的代码来创建子类:

class TestedViewCell: SwipeTableViewCell
{
    var animator: Any?
}

以上行与导入的套件在同一个文件中。然后我得到这样的错误:

Could not cast value of type 'SwipeCellKit.SwipeTableViewCell' (0x100121a60) to 'app.TestedViewCell' (0x100076f40).

我是不是把它子类化错了?谢谢。

【问题讨论】:

  • SwipeTableViewCell 是 UItableViewCell 的子类吗??
  • 尝试在ViewDidLaod中注册cell self.tableView.registerClass(TestedViewCell.self, forCellReuseIdentifier: "reuseIdentifier")
  • 您是否通过界面生成器添加单元格并将类设置为 SwipeTableViewCell 而不是 TestedViewCell?
  • 我注册错了!谢谢大家我会+1 cmets。我做了 table.register(SwipeTableViewCell.self, forCellReuseIdentifier: "reuseIdentifier");而不是 table.register(TestedViewCell.self, forCellReuseIdentifier: "reuseIdentifier");

标签: ios swift uitableview swift3 subclass


【解决方案1】:

尝试在 ViewDidLaod 中注册TestedViewCell

self.tableView.registerClass(TestedViewCell.self, forCellReuseIdentifier: "reuseIdentifier")

【讨论】:

    【解决方案2】:

    从你的错误

    无法转换“SwipeCellKit.SwipeTableViewCell”类型的值 (0x100121a60) 到 'app.TestedViewCell' (0x100076f40)。

    很明显,您正在尝试将 SwipeTableViewcell 转换为 TestedViewCell。 TestedViewCell 是 SwipeTableViewcell 的子类。问题可能出在您的注册单元中。您需要在 viewDidLoad 中将单元格注册为

    self.tableView.registerClass(TestedViewCell.self, forCellReuseIdentifier: "testedViewCell")
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-02-14
      • 2010-10-20
      • 1970-01-01
      • 1970-01-01
      • 2011-06-17
      • 1970-01-01
      相关资源
      最近更新 更多