我们可以将UItableview转换为UItableviewcell吗?

时间:2018-12-23 06:24:17

标签: swift

我们可以从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
    }

 }

2 个答案:

答案 0 :(得分:0)

在您的代码中,您没有从UITableView下放到UITableViewCell。在功能cellForRowAt中,您仅使可重用单元出队,而这些单元是您向下转换到自定义表视图单元CategoryCell的单元。

答案 1 :(得分:0)

回答您的问题“我们可以将UItableview下放到UItableviewcell吗?”没有。在dequeueReusableCell(withIdentifier:)中,您实际上将UITableViewCell强制转换为CategoryCell,因为所有表单元格的父类是UITableViewCelldequeueReusableCell(withIdentifier:)上的函数UITableView总是返回UITableViewCell类型的对象。