代表函数没有触发 - 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")
}
}
答
这是一个相当普遍的问题。
只需在您创建单元格的位置添加cell.delegate = self
,例如在cellForRowAt
中。
也让你的委托物业weak
。
答
委托对象应维护一个弱对其委托的引用。
weak var delegete: CustChatButtonDelegate?
请注意,强默认是开启的对象引用应用。
在您创建单元格的地方添加'cell.delegate = self' –
您是否设置了CustButtonCell的委托属性?此外,您可能希望将该委托声明为“弱”,因为否则将有一个参考周期。 – Palle
你的代码中的' .delegate = self'(或类似的东西)在哪里?换句话说,你在哪里给'delegate' var赋值了? –
holex