代表函数没有触发 - Swift 4

问题描述:

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

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) 
    } 

} 

MainController:

import UIKit 

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

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

} 
+0

在您创建单元格的地方添加'cell.delegate = self' –

+0

您是否设置了CustButtonCell的委托属性?此外,您可能希望将该委托声明为“弱”,因为否则将有一个参考周期。 – Palle

+0

你的代码中的' .delegate = self'(或类似的东西)在哪里?换句话说,你在哪里给'delegate' var赋值了? – holex

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

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

也让你的委托物业weak

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

weak var delegete: CustChatButtonDelegate? 

请注意,默认是开启的对象引用应用。