我在tableView中有一个文本字段。我需要获得textfield的位置,但问题是它有多个部分。我只能使用textfield.tag
获得一个部分或行,但我需要两个。
答案 0 :(得分:1)
你可以通过走UIResponder链找到任何类的父UIResponder; UITextField和UITableViewCell都继承自UIRiew,它继承自UIResponder,因此要获取文本字段的父tableViewCell,可以在文本字段中调用此函数:
extension UIResponder {
func findParentTableViewCell () -> UITableViewCell? {
var parent: UIResponder = self
while let next = parent.next {
if let tableViewCell = parent as? UITableViewCell {
return tableViewCell
}
parent = next
}
return nil
}
}
然后,一旦你有了tableViewCell,你就可以向tableView询问其tableView.indexPAth(for:)的索引路径
您永远不需要使用标记字段:
guard let cell = textField.findParentTableViewCell (),
let indexPath = tableView.indexPath(for: cell) else {
print("This textfield is not in the tableview!")
}
print("The indexPath is \(indexPath)")