gpt4 book ai didi

ios - 如何在textFieldDidEndEditing中找到正在编辑的tableview?

转载 作者:行者123 更新时间:2023-11-30 10:56:55 25 4
gpt4 key购买 nike

我正在使用 2 个 tableviews

两者在tableviewcell中都有textfiled

我在 textFieldDidEndEditing 中获取文本字段的文本,但是我如何知道正在编辑的文本属于哪个 TableView ,我只想知道可以区分来自文本字段的文本以存储在其中的条件两个不同的数组。

func textFieldDidEndEditing(_ textField: UITextField)
{
// let indexOf = txtArray.index(of:textField.tag)

if self.tblAnswer.isEditing
{
let indexOf = textField.tag

if let text = textField.text
{
if allAnsText.indices.contains(indexOf)
{
allAnsText.remove(at: indexOf)
}
if text.isEmpty
{
print("Write some text there")
}
else
{
allAnsText.insert(text, at: indexOf)
print(allAnsText)
}
}
}
else if self.tblVideo.isEditing
{
let indexOf = textField.tag

if let text = textField.text
{
if allMediaText.indices.contains(indexOf)
{
allMediaText.remove(at: indexOf)
}
if text.isEmpty
{
print("Write some text there")
}
else
{
allMediaText.insert(text, at: indexOf)
print(allMediaText)
}
}

}

}

最佳答案

忘记遍历 View 层次结构;它很容易出错,并且确切的细节将来可能会发生变化(并严重破坏您的应用程序)。

原始答案(供后代使用)

相反,试试这个:

  1. 获取文本字段在屏幕上的位置:

    // Center on text field's own coordinate system
    let position = textField.frame.center

    // Center on Window's coordinate system
    let positionOnWindow = textField.convert(position, to: nil)
  2. 将该点转换为表格 View 的坐标系,并查看它是否对应于一行:

    let positionInTable = tableView1.convert(positionOnWindow, from: nil)</strike>

    if let indexPath = tableView1.indexPathForRow(at: positionInTable) {
    // Text field is inside a row of table view 1
    } else {
    // Otherwise
    }

注意:上面的代码未经测试。可能包含编译器错误。

假设两个代码片段在同一个类(您的 TableView 委托(delegate)、数据源和文本字段委托(delegate))上运行,那么传递 positionOnWindow 的值应该没有问题(这都可能发生在文本字段委托(delegate)方法)。

更好的答案

正如 @rmaddy 在评论中指出的那样,上面的代码过于迂回;您可以直接获取位置:

let positionInTable = tableView1.convert(textField.frame.center, from: textField)

(无需往返于窗口坐标系)

关于ios - 如何在textFieldDidEndEditing中找到正在编辑的tableview?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53855023/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com