DeviceTableViewCell
我在自定义DeviceTableViewCell
上创建了一个协议
protocol DeviceTableViewCellDelegate : NSObjectProtocol {
func printMe(_ text : String)
}
我还在
中声明了我的delegate
weak var delegate: DeviceTableViewCellDelegate?
DevicesViewController
我有这个
extension DevicesViewController: DeviceTableViewCellDelegate {
func printMe(_ text : String) {
let text = "Protocol & Delegate"
print("........")
print(text)
print("........")
}
}
我不知道如何触发我的print()语句。 一个人会如何触发呢?
我需要给我的printMe()
打电话吗?
我在这里错过了什么吗?
答案 0 :(得分:0)
首先,请执行以下操作:
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "YourCellIdentifier", for: indexPath) as! DeviceTableViewCell
cell.delegate = self
}
然后,您必须从单元格调用printMe来处理您的操作
答案 1 :(得分:0)
您只需声明委托函数的工作方式,您尚未调用它。
根据上下文,您可以决定何时呼叫delegate.printMe(_ text : "Foo")
。
我建议您参考一个简单的示例:passing data back to previous view controller from current view controller using delegate。
答案 2 :(得分:0)
让我们以例子来理解这个概念。因此,您已经为协议创建了委托变量。
weak var delegate: DeviceTableViewCellDelegate?
现在要调用协议方法,您需要将委托分配给某些viewController或类。让我们在viewDidLoad方法的同一视图控制器中进行分配。
override func viewDidLoad(){
delegate = self
}
现在让我们说当按下某个按钮时需要调用协议方法。因此,您需要做的就是在按钮按下方法中调用此方法。
delegate?.printMe("Button Pressed")