【问题标题】:Delegate function is not firing-Swift 4委托功能未触发-Swift 4
【发布时间】:2017-08-16 08:00:26
【问题描述】:

场景: 我有一个表格视图和一个自定义按钮单元格。在单元的控制器中,我做了一个委托来调用 MainController 的函数。 问题是我的单元格按钮操作正在触发,但删除功能没有。

CustomCell 控制器:

import UIKit

protocol CustChatButtonDelegate: class {
    func chatActionClick(cell: CustButtonCell)
}
class CustButtonCell: UITableViewCell {

    var delegete:CustChatButtonDelegate?
     @IBOutlet weak var btnChat: UIButton!

    override func prepareForReuse() {
        super.prepareForReuse()
//        self.delegete=nil
    }
    override func awakeFromNib() {
        super.awakeFromNib()
        // Initialization code
    }
    override func setSelected(_ selected: Bool, animated: Bool) {
        super.setSelected(selected, animated: animated)

        // Configure the view for the selected state
    }
    @IBAction func btnChatActionClick(_ sender: Any) {
        print("btn click")
        self.delegete?.chatActionClick(cell: self)
    }

}

主控制器:

import UIKit

class ChatController: UIViewController ,UITableViewDelegate, UITableViewDataSource, ChatButtonDelegate,CustChatButtonDelegate {

func chatActionClick(cell: CustButtonCell) {
        print("btnClicked")
    }

}

【问题讨论】:

  • 在您创建单元格的位置添加cell.delegate = self
  • 你设置了CustButtonCell的delegate属性了吗?此外,您可能希望将委托声明为 weak,否则您将有一个引用循环。
  • 你的代码中的<myCustomsCellInstance>.delegate = self(或类似的东西)在哪里?或者换句话说,你在哪里为delegate var 赋值?
  • cell.delegate = self为我工作,非常感谢^_^。请将您的评论添加为单独的答案。

标签: ios swift uitableview custom-cell


【解决方案1】:

这是一个相当普遍的问题。

只需在要创建单元格的位置添加cell.delegate = self,例如cellForRowAt

同时将您的委托属性设为weak

【讨论】:

    【解决方案2】:

    委托对象应维护对其委托的引用。

    weak var delegete: CustChatButtonDelegate?
    

    请注意,strong默认应用于对象引用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-11-27
      • 1970-01-01
      • 2023-04-11
      • 1970-01-01
      • 1970-01-01
      • 2018-11-27
      • 1970-01-01
      相关资源
      最近更新 更多