“UITableViewCell”类型的值?没有会员'委托'

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了“UITableViewCell”类型的值?没有会员'委托'相关的知识,希望对你有一定的参考价值。

我在我的TableViewCell类中创建了一个自定义委托,并在tableView类中调用它,但不知道为什么会出现这个错误。

TableView类: -

 //Cell For Row at indexPath
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell
{
    if (0 == indexPath.section)
    {
        let cell = tableView.dequeueReusableCell(withIdentifier: "FirstRowCell") as! FirstRowCell
        cell.btnReview.addTarget(self, action: #selector(GotoReview), for: UIControlEvents.touchUpInside)

        //cell.
        return cell
    }

    else if ( 1 == indexPath.section)
    {
        let identifier = "TableCollectionCell"
        var tableCollectionCell = tableView.dequeueReusableCell(withIdentifier: identifier)
        if(tableCollectionCell == nil)
        {
            let nib:Array = Bundle.main.loadNibNamed("TableCollectionCell", owner: self, options: nil)!
            tableCollectionCell = nib[0] as! TableCollectionCell

            //Delegate
            tableCollectionCell.delegate = self

        }

        return tableCollectionCell!
    }

    else
    {
        let identifier = "BrandImagesTableCell"
        var brandImagesTableCell = tableView.dequeueReusableCell(withIdentifier: identifier)
        if(brandImagesTableCell == nil)
          {
            let nib:Array = Bundle.main.loadNibNamed("BrandImagesTableCell", owner: self, options: nil)!
            brandImagesTableCell = nib[0] as? BrandImagesTableCell
          }
        return brandImagesTableCell!
    }
}


extension HomeViewController : CollectionViewCellTap
{
  func didTapCollectionViewCell(indexPath: Int) {
    let gotoCreateGroup =  self.storyboard?.instantiateViewController(withIdentifier: "CreateGroupView") as! CreateGroupView

    self.present(gotoCreateGroup, animated: true, completion: nil)
  }
}

从UITableViewCell类调用: -

  protocol CollectionViewCellTap
  {
   func didTapCollectionViewCell(indexPath : Int)

  }

  class TableCollectionCell: UITableViewCell {

@IBOutlet weak var collectionView: UICollectionView!

var delegate : CollectionViewCellTap?

override func awakeFromNib() {
    super.awakeFromNib()

    //collectionView cell
    collectionView!.register(UINib(nibName: "CreateGroupCell", bundle: nil), forCellWithReuseIdentifier: "CreateGroupCell")
}

override func setSelected(_ selected: Bool, animated: Bool) {
    super.setSelected(selected, animated: animated)

}

 }

  //Collection View
 extension TableCollectionCell : UICollectionViewDataSource ,UICollectionViewDelegateFlowLayout
 {
    func collectionView(_ collectionView: UICollectionView,  numberOfItemsInSection section: Int) -> Int
{
    return 4
}

func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell
{
    let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "CreateGroupCell", for: indexPath) as! CreateGroupCell

    cell.groupName.text = ""
    CreateCardView(viewCorner: cell.cardView)

    if(0 == indexPath.row)
    {
        //cell.btnDotted.tag = indexPath.row
        //cell.btnShare.tag = indexPath.row
        cell.btnDotted.setImage(UIImage(named: "Info"), for: UIControlState.normal)
        cell.btnShare.setImage(UIImage(named : "AddGroup"), for: UIControlState.normal)
    }

    else if(indexPath.row >= 1 && indexPath.row <= 3)
    {
        cell.btnDotted.isHidden = true
        cell.btnShare.isHidden = true
        cell.groupImage.image = UIImage(named: "group_dull_card.png")
    }

    else
    {

    }

    return cell
}


func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {

    if ( 0 == indexPath.row) {

       delegate?.didTapCollectionViewCell(indexPath: indexPath.row)
    }
}

func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {

    return CGSize(width: 200, height: 150)
}
}

我是ios新手。

答案

当你使用CustomTableCell启动单元格对象时,你需要明确指定dequeueReusableCell(withIdentifier:)的类型,否则它认为UITableViewCell的对象没有属性delegate,所以只需在末尾添加as! TableCollectionCell,所以现在你可以访问属性类TableCollectionCell

var tableCollectionCell = tableView.dequeueReusableCell(withIdentifier: identifier) as? TableCollectionCell 
另一答案

检查这个 -

我想你错过了这个

enter image description here

以上是关于“UITableViewCell”类型的值?没有会员'委托'的主要内容,如果未能解决你的问题,请参考以下文章

无法将“UITableViewCell”(0x11e159aa0)类型的值转换为“test.CourseItemTableViewCell”

第一个 UITableViewCell 没有调用 didSelectRowAtIndexPath

UITableViewCell 正确地从 UITablView 出列,但它没有显示传递的值

如何按创建 UITableViewCell 时计算的值对 UITableView 进行排序?

自定义 UITableViewCell 显示不正确的值

在 UiTableViewCell 上设置时,DisclosureButton Indicator 或任何类型的附件类型似乎都没有出现