gpt4 book ai didi

swift - 如何从带有文本框的自定义单元格中获取 didselectrowat?

转载 作者:行者123 更新时间:2023-11-28 05:41:39 26 4
gpt4 key购买 nike

我有一个包含 3(cell1,cell2,cell3) 个自定义单元格的动态表格 View ,它可以在任何地方重复使用 0 次到 9 次。 (表格 View 中的最大单元格为 27 个单元格)。

这 3 个自定义单元格中的每一个都有 3 个文本框,此外,第二个单元格有 2 个按钮来选择性别,第三个自定义单元格有一个下拉菜单,其中包含在 cell1 单元格的第一个文本框中键入的任何值.

现在的问题是,文本框接受了用户的触摸输入(它应该如此)并且永远不会调用 didselectrowat,因此我没有得到 indexPath。但我需要 indexPath,这样我就可以将每个单元格中的用户详细信息插入到数组中。

(anArray.insert("", at: indexPath)

因为我没有得到 indexPath,一切都失败了。如何获取 indexPath 并触摸文本框?

我在想一些类似函数的东西,它接受触摸,获取 indexPath,然后将控件传递给文本框。

我尝试过的事情。

我在用户触摸单元格之前禁用了文本框(并在用户取消选择单元格后禁用了文本框,因此单元格进行了触摸。调用 didselectrowat 后,再次激活文本框并制作

textbox.becomeFirstResponder()

但不知何故,即使断点显示控件通过它并且文本框变为事件状态,文本框也永远不会成为第一响应者。但是没有键盘弹出,如果我再次触摸单元格,会发生相同的过程。

这似乎是什么问题?我看到了另一篇关于同一主题的帖子,我试过了,但不幸的是那不起作用,它是针对静态表格 View 的。

请问有什么好的方法吗?除了让用户点击单元格两次/点击文本框之外......

最佳答案

您可以将自定义单元格设置为 UITextFielddelegate 并使用回调来编辑开始/结束,如下所示,

class MyCustomCell: UITableViewCell, UITextFieldDelegate {

public var editCallback: (() -> Void)?

/// Set 'textField.delegate = self' on initialization.

func textFieldDidBeginEditing(_ textField: UITextField) {
self.editCallback?()
}
}

并使用 cellForRowAt 中的回调作为,

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = MyCustomCell()
cell.editCallback = { [weak self] in
print(indexPath)
}
return cell
}

关于swift - 如何从带有文本框的自定义单元格中获取 didselectrowat?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56536266/

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