我们可以从UITableview
下调到UITableviewCell
吗?
据我所知,我很困惑,向下转换是超类和子类之间的过程,但是在下面的编码中
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
if let cell=tableView.dequeueReusableCell(withIdentifier: "Categorycell")as? CategoryCell{
let category=DataService.instance.getCategories()[indexPath.row]
cell.updateViews(categories: category)
return cell
}else{
return CategoryCell()
}
}
UITableview
已被下调为UItableviewCell
但我跳过那些类型定义都没有关联(通过层次结构)
class CategoryCell: UITableViewCell {
@IBOutlet weak var categoryImage:UIImageView!
@IBOutlet weak var categoryTitle:UILabel!
func updateViews(categories:Category) {
categoryImage.image=UIImage(named: categories.imageName)
categoryTitle.text=categories.title
}
}
答案 0 :(得分:0)
在您的代码中,您没有从UITableView
下放到UITableViewCell
。在功能cellForRowAt
中,您仅使可重用单元出队,而这些单元是您向下转换到自定义表视图单元CategoryCell
的单元。
答案 1 :(得分:0)
回答您的问题“我们可以将UItableview下放到UItableviewcell吗?”没有。在dequeueReusableCell(withIdentifier:)
中,您实际上将UITableViewCell
强制转换为CategoryCell
,因为所有表单元格的父类是UITableViewCell
且dequeueReusableCell(withIdentifier:)
上的函数UITableView
总是返回UITableViewCell
类型的对象。