Ios 如何访问一行中的两个文本字段
我有一个UITableView,在上一个视图中,动态单元格是用来创建这些单元格的滑块。 每行包含两个文本字段。 首先是距离起点的距离。 二是描述 我可以通过tableView中的单元格访问这些文本字段。 我的桌面视图:Ios 如何访问一行中的两个文本字段,ios,swift,uitableview,uitextfield,Ios,Swift,Uitableview,Uitextfield,我有一个UITableView,在上一个视图中,动态单元格是用来创建这些单元格的滑块。 每行包含两个文本字段。 首先是距离起点的距离。 二是描述 我可以通过tableView中的单元格访问这些文本字段。 我的桌面视图: override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { let cellIdentifier = "Cell
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cellIdentifier = "Cell"
let cell: FirstAddPointTableViewCell = self.tableView.dequeueReusableCell(withIdentifier: cellIdentifier, for: indexPath) as! FirstAddPointTableViewCell
cell.numberOfCell.text? = "\(indexPath.row + 1)."
cell.distance.text? = arrayTextField1[indexPath.row]
cell.description.text? = arrayTextField2[indexPath.row]
cell.distance.tag = indexPath.row
cell.description.tag = indexPath.row
cell.distance.delegate = self
cell.description.delegate = self
return cell
我的代码中有func textfielddidediting,但我不知道如何访问textFields-distance和description来将正确的值保存到我的两个数组中
我知道这个代码只适用于一个文本字段。如果我有两个文本字段,则此代码错误:
func textFieldDidEndEditing(_ textField: UITextField) {
print("End editing!")
if textField.text != "" {
arrayTextField1[textField.tag] = textField.text!
arrayTextField2[textField.tag] = textField.text!
} else if textField.text == "" {
arrayTextField1[textField.tag] = textField.text!
arrayTextField2[textField.tag] = textField.text!
}
}
这是我的第一个AddPointTableViewCell:
import UIKit
class FirstAddPointTableViewCell: UITableViewCell {
@IBOutlet weak var cislovaniPrekazek: UILabel!
@IBOutlet weak var prekazkyFormulare: UITextField!
@IBOutlet weak var poznamkyFormulare: UITextField!
override func awakeFromNib() {
super.awakeFromNib()
}
override func setSelected(_ selected: Bool, animated: Bool) {
super.setSelected(selected, animated: animated)
}
}
我的想法类似于textfielddidediting中的代码,但我不知道怎么做。我无法访问它们:
arrayTextField1[distance.tag] = distance.text!
arrayTextField2[description.tag] = description.text!
你能帮我吗?对不起,我说的是英语。在一次调用TextFieldDiEndEditing的过程中,您试图同时设置arrayTextField1和arrayTextField2,这似乎不正确。您需要将编辑的文本字段与正确的数组相关联 一种想法是在每个UITextField的标记中编码额外的信息。您所需要的是如下所示,我们利用了标记是有符号整数这一事实: //在tableView cellForRowAt方法中,按如下方式编辑标记设置行: cell.distance.tag=indexPath.row+1//标记将基于1,因为-0==0 cell.description.tag=-indexPath.row+1//将其存储为一个负数行,以便以后可以区分描述文本字段 func textField didendediting_textField:UITextField { guard let text=textField.text else{return} 如果textField.tag>0{ arrayTextField1[textField.tag-1]=文本 }否则,如果textField.tag<0{ arrayTextField2[abstextField.tag-1]=文本 }否则{ asserttrue//其他文本字段是否已结束编辑? } } 如果您使用上述方法,请确保将标记计算封装在某些函数中,以使将来的可维护性更加清晰
将任意数量的数据附加到UIView而不将其子类化的更优雅的解决方案是。感谢您的时间和帮助。Assert0-出现错误-无法将Int类型的值转换为Bool。。。所以我试过了-第一个文本字段是可以的,但同一行的第二个是在第三行上下滚动tableView之后。我更改了断言,现在第二个文本字段描述为空。有gif——将UITextFields存储在一个数组中超过单元格寿命的想法是错误的。在单元格每次出列后创建它们,并从数据数组中设置它们的文本。我的标记方法仍然允许您将编辑的UITextField与两列的数据数组进行匹配。我可以编辑我的答案,但实际上它需要一个全新的问题,因为它超出了关于匹配现有文本字段数组的问题的范围。我的程序是这样工作的:用户填写路线名称、总距离和TableView中的行数。在此之后-点击下一步。然后用户在文本字段中填写从开始到结束的每一行距离,比如检查点和描述。所以不可能从数组中加载数据,因为它是空的,需要通过textField将数据放入数组中。您能给我一些建议吗?或者问题是我试图从错误的角度来解决它?我知道如果用户首先填写所有距离检查点-保存,然后在新的表格中查看所有描述。。但我认为这对用户来说是一个漫长的过程。