如何在tableview中获取文本字段的节数和行数?

时间:2017-11-25 08:54:41

标签: ios swift

我在tableView中有一个文本字段。我需要获得textfield的位置,但问题是它有多个部分。我只能使用textfield.tag获得一个部分或行,但我需要两个。

1 个答案:

答案 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)")