Swift 如何从带有文本框的自定义单元格中获取didselectrowat?
我有一个带有3个(cell1、cell2、cell3)自定义单元格的动态表视图,可以在任何地方重复使用0到9次。(tableview中的最大单元格数为27个) 这3个自定义单元格中的每一个都有3个文本框,另外第二个单元格有2个按钮选择性别,第三个自定义单元格有一个下拉菜单,其中有在cell1单元格的第一个文本框中键入的值 现在的问题是,textbox从用户那里获取触摸输入(它应该这样做),而didselectrowat从未被调用,因此我没有得到indexPath。 但我需要indexPath,这样我就可以将每个单元格中的用户详细信息插入到数组中Swift 如何从带有文本框的自定义单元格中获取didselectrowat?,swift,uitableview,textbox,Swift,Uitableview,Textbox,我有一个带有3个(cell1、cell2、cell3)自定义单元格的动态表视图,可以在任何地方重复使用0到9次。(tableview中的最大单元格数为27个) 这3个自定义单元格中的每一个都有3个文本框,另外第二个单元格有2个按钮选择性别,第三个自定义单元格有一个下拉菜单,其中有在cell1单元格的第一个文本框中键入的值 现在的问题是,textbox从用户那里获取触摸输入(它应该这样做),而didselectrowat从未被调用,因此我没有得到indexPath。 但我需要indexPath,这
(anArray.insert("", at: indexPath)
因为我没有得到什么,一切都失败了。我如何获得indexPath并触摸文本框
我正在考虑一个类似于函数的东西,它接受触摸,获取indexPath,然后将控件传递给textbox
我尝试过的事情
我在用户触摸单元格之前禁用了文本框(并在用户取消选择单元格后禁用文本框,以便单元格进行触摸。调用didselectrowat后,再次激活文本框并使其生效)
textbox.becomeFirstResponder()
但不知何故,文本框永远不会成为第一响应者,即使断点显示控件通过它,文本框也会变为活动状态。但没有键盘弹出按钮,如果我再次触摸单元格,同样的过程也会发生
这里的问题是什么?我看到了另一篇关于同一主题的文章,我尝试过,但不幸的是,这不起作用,而且是针对静态tableview的
还有一个好方法吗?除了让用户在单元格上单击两次/在文本框外单击..之外,您可以将自定义单元格设置为
UITextField
,并使用回调来编辑开始/结束,如下所示
class MyCustomCell: UITableViewCell, UITextFieldDelegate {
public var editCallback: (() -> Void)?
/// Set 'textField.delegate = self' on initialization.
func textFieldDidBeginEditing(_ textField: UITextField) {
self.editCallback?()
}
}
并使用cellForRowAt
as中的回调
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = MyCustomCell()
cell.editCallback = { [weak self] in
print(indexPath)
}
return cell
}
你可以试试这个
public func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
tableView.deselectRow(at: indexPath, animated: false)
//your code here
}
什么?!…我选择了indexPath,然后立即取消选择?请阅读问题