我正在使用表视图控制器来显示内容。我正在尝试制作可编辑的UITextField,但它不可编辑。我可以让它们显示在每个单元格中,但是当我点击它们时它们是不可编辑的。我也试图存储用户在每个单元格中输入的内容。请忽略已注释掉的部分。这是我的代码:
override func numberOfSections(in tableView: UITableView) -> Int {
return 1
}
override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return words.count
}
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "transportCell", for: indexPath)
self.tableView.rowHeight = 100
//var a = Array(words[indexPath.row])
//a.shuffle()
//var shuffledWord = String(a)
//shuffledWord = shuffledWord.lowercased()
let sampleTextField = UITextField(frame: CGRect(x:60, y: 30, width: 150, height: 40))
sampleTextField.placeholder = "Enter text here"
sampleTextField.font = UIFont.systemFont(ofSize: 15)
sampleTextField.borderStyle = UITextBorderStyle.roundedRect
sampleTextField.autocorrectionType = UITextAutocorrectionType.no
sampleTextField.keyboardType = UIKeyboardType.default
sampleTextField.returnKeyType = UIReturnKeyType.done
sampleTextField.clearButtonMode = UITextFieldViewMode.whileEditing;
sampleTextField.contentVerticalAlignment = UIControlContentVerticalAlignment.center
sampleTextField.delegate = self as? UITextFieldDelegate
var userEntry = sampleTextField.text
sampleTextField.tag = indexPath.item // You will access the text field with this value
cell.addSubview(sampleTextField)
//cell.textLabel?.text = shuffledWord
//var imageName = UIImage(named: words[indexPath.row])
//cell.imageView?.image = imageName
return cell
}
答案 0 :(得分:2)
将cell.addSubview(sampleTextField)
更改为cell.contentView.addSubview(sampleTextField)
有关contentView
答案 1 :(得分:1)
文本字段可能有几个原因不可编辑。
检查您是否使用过UITextFieldDelegate并将textfield委托设置为self,即textfield.delegate = self
将子视图添加到单元格时,请确保将其添加到单元格的内容视图中。例如cell.contentView.addSubview(textField)
确保文本字段顶部没有其他视图。
如果您已实施:
func textFieldShouldBeginEditing(_ textField:UITextField) - > Bool然后它应该返回true否则键盘将不会出现,你将无法编辑文本字段。
6.确保故事板或Xib文件中的textfield与视图控制器中已声明文本字段的@IBOutlet文本字段之间保持正确连接。
我希望这会帮助你!
答案 2 :(得分:0)
据我说,
在, 您可以编辑,您可以直接从文本字段中获取数据,以便通过sampleTextField.text
存储它。 希望,这将是有效的。如果您仍然发现问题,请随时提出。