use*_*240 2 delegates selector uitableview swift swift4
我在 tableView 中有一个单元格,带有一个我想向其添加操作的按钮。
该按钮将是一个电子邮件地址。当按钮被按下时,我想触发一个委托,让另一个 ViewController 打开一封电子邮件。但是,我需要能够将电子邮件作为参数传入,而 Swift 似乎不允许我这样做。
相关代码如下:
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let row = self.sections[indexPath.section].rows[indexPath.row]
switch row {
case .Email:
cell.infoLabel.setTitle(cellInfo.email, for: .normal)
cell.infoLabel.addTarget(self, action: #selector(emailPressed(recipient: cellInfo.email!)), for: .touchUpInside)
cell.imageType.image = UIImage(named: "Email")
}
}
@objc func emailPressed(recipient: String){
self.delegate?.dataController(self, recipientEmail: recipient)
}
protocol DataControllerDelegate: class {
funcdataController(_ DataController: DataController, recipientEmail: String)
}
Run Code Online (Sandbox Code Playgroud)
我收到错误消息:“'#selector' 的参数未引用 '@objc' 方法、属性或初始值设定项”
有没有办法将电子邮件传递给@objc 函数,以便它可以输入到委托函数中?
您不能将任何内容传递给目标的操作方法。你不调用方法;目标-动作架构在点击按钮时调用它。action 方法必须接受一个参数,即发送者(在本例中为按钮)。
如果 action 方法在调用时需要更多信息,您必须以其他方式提供该信息,例如作为 action 方法在调用时可以访问的实例属性。
| 归档时间: |
|
| 查看次数: |
3631 次 |
| 最近记录: |