执行操作(包括委托和协议)时,部件不起作用



我有一个名为"customerInformationTableViewCell"的自定义单元格类。我在这个单元格中有一个文本字段。我创建了一个操作,该操作在编辑完成后打开。我创建了一个协议和委托来与我的视图控制器共享信息。但是防护(包含(之后的代码似乎不起作用,因为 print("2"( 不起作用。问题出在哪里?请帮忙!

@IBAction func textField(_ sender: UITextField) {
print("1")
guard let cell = sender.superview as? customerInformationTableViewCell else { return }
print("2")
let indexPath = (sender.superview?.superview as! UITableView).indexPath(for: cell)
self.delegate?.shareDetailsInvoice(row: indexPath!.row, input: textField.text!)
}

一种解决方法是使用此扩展

import UIKit
extension UIView {
func lookForSuperviewOfType<T: UIView>(type: T.Type) -> T? {
guard let view = self.superview as? T else {
return self.superview?.lookForSuperviewOfType(type: type)
}
return view
}
} 

如何使用它

let cell = sender.lookForSuperviewOfType(type: customerInformationTableViewCell.self)

并获取表格视图

let tableView = sender.lookForSuperviewOfType(type: UITableView.self)

所以你的函数会变成这样

@IBAction func textField(_ sender: UITextField) {
print("1")
guard let cell = sender.lookForSuperviewOfType(type: customerInformationTableViewCell.self)  else { return }
print("2")
let indexPath = sender.lookForSuperviewOfType(type: UITableView.self)?.indexPath(for: cell)
self.delegate?.shareDetailsInvoice(row: indexPath!.row, input: textField.text!)
}

相关内容

  • 没有找到相关文章

最新更新