gpt4 book ai didi

ios - 如何获取 TextField 输入以及为什么在我滚动时重复输入?

转载 作者:搜寻专家 更新时间:2023-11-01 06:17:11 24 4
gpt4 key购买 nike

我这样创建 TableViewCells:

 override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "ErnaehrungTableViewCell", for: indexPath) as! ErnaehrungTableViewCell
let row = indexPath.row
cell.LabelType.text = cellValues[indexPath.row]
cell.TextValue.keyboardType = .decimalPad
cell.TextValue.tag = indexPath.row

cell.selectionStyle = .none
cell.ButtonUnit.addTarget(self, action: #selector(ErnaehrungManualController.ButtonUnitClick), for: .touchUpInside)
cell.ButtonUnit.tag = indexPath.row`

LabelType 是一个标签,TextValue 是一个文本字段,ButtonUnit 是一个按钮。它看起来像这样: enter image description here

如果我在前五个 TextField 中输入(如图所示)并滚动,输入也会在其他行中。

我该如何解决?

如果我按下右上角的按钮 (Fertig),那么我想阅读所有 TextFields 的文本。我有这段代码,但我不工作:

for var i in 0...cellValues.count-1 {
let indexPath = IndexPath(row: i, section: 0)
let cell = tableView.dequeueReusableCell(withIdentifier: "ErnaehrungTableViewCell", for: indexPath) as! ErnaehrungTableViewCell

if let text = cell.TextValue.text, !text.isEmpty
{
let textString = cell.TextValue.text!
print(textString)

}
}

那么我该如何解决 TextFields(我没有输入文本的地方)不复制其他 TextFields 的输入?

我如何读出所有行的 TextField.text?

感谢您的帮助,如果您需要更多代码,我会添加。

最佳答案

这是因为 dequeue the cell 重用了 cell 。为了避免这个问题,将值存储在数组中,然后在调用 TableView 委托(delegate)时设置值。在 SWIFT 3 中

var dataList = ["","","",""] // Array size should be same as the total row count


func textFieldShouldEndEditing(_ textField: UITextField) -> Bool {

if textField.text != ""{

dataList[textField.tag] = textField.text!
}
}

override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {

let cell = tableView.dequeueReusableCell(withIdentifier: "ErnaehrungTableViewCell", for: indexPath) as! ErnaehrungTableViewCell
let row = indexPath.row
cell.LabelType.text = cellValues[indexPath.row]
cell.TextValue.text = dataList[indexPath.row] // Setting the value here
cell.TextValue.keyboardType = .decimalPad
cell.TextValue.tag = indexPath.row
cell.TextValue.delegate = self // Setting delegate here
cell.selectionStyle = .none
cell.ButtonUnit.addTarget(self, action: #selector(ErnaehrungManualController.ButtonUnitClick), for: .touchUpInside)
cell.ButtonUnit.tag = indexPath.row`

}

关于ios - 如何获取 TextField 输入以及为什么在我滚动时重复输入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41952078/

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