嘿伙计们,因为你们将此标记为副本,请听我说。我尝试了与此主题相关的所有内容,包括添加
self.tableView.registerClass(UserCell.self,forCellReuseIdentifier:" cell")
我还更改了占位符单元格以匹配UserCell类
我不确定它可能是什么!我收到错误:
无法转换类型' UITableViewCell' (0x1134700e0)到' Lightning_Chat.UserCell'
类型SIGBRT不确定会发生什么,我已尝试过一切请帮助!
这是表视图代码:
public func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell{
// not casting for some reason
let cell : UserCell = UITableViewCell(style: .subtitle , reuseIdentifier: "cellId") as! UserCell
cell.textLabel?.text = contacts[indexPath.row].userName
cell.detailTextLabel?.text = contacts[indexPath.row].score
if let profileImageUrl = contacts[indexPath.row].picURL {
let url = URL(string: profileImageUrl)
URLSession.shared.dataTask(with: url!, completionHandler: { (data, response, error) in
//download hit an error
if error != nil {
print(error!)
return
}
DispatchQueue.main.async {
cell.profileImageView.image = UIImage(data: data!)
}
}).resume()
}
return cell;
}
这是我的观点确实加载:
override func viewDidLoad() {
super.viewDidLoad()
self.tableView.register(UserCell.self, forCellReuseIdentifier: "cellId")
//irrelevant
fetchUsers()
}
答案 0 :(得分:2)
而不是:
let cell : UserCell = UITableViewCell(style: .subtitle , reuseIdentifier: "cellId") as! UserCell
试试这个:
let cell = tableView.dequeueReusableCell(withIdentifier: "cellId", for: indexPath) as! UserCell
答案 1 :(得分:1)
您没有正确创建单元格。
变化:
let cell : UserCell = UITableViewCell(style: .subtitle , reuseIdentifier: "cellId") as! UserCell
为:
let cell = tableView.dequeueReusableCell(withIdentifier: "cellId", for: indexPath) as! UserCell
请注意,您的代码是直接创建UITableViewCell
,这就是您无法投射它的原因。您也绕过了标准单元重用。
答案 2 :(得分:-1)
以下是修复问题的步骤
基本上你得到的错误是因为混合并匹配表视图中的错误属性。
希望有所帮助