无法将数据从 UIPickerView 传递到 CustomTableViewCell
Unable of passing data from UIPickerView to CustomTableViewCell
我正在尝试一些相对简单的方法,但我无法解决这个问题。我有一个注册视图控制器,其中嵌入了 UITableView。具有 CustomsCells 的 TableView 嵌入了三种自定义单元格。最后一个是使用 UITextfield 自定义的,当 selected 假设从底部触发 PickerView 时,用户可以 select 在那里形成所需的偏好。除了一件小事,一切都很好;当任何行被 selected 文本应该是文本字段的输入时,但这并没有发生。
我在网上试过几段代码,但大多数都是关于文本字段在同一个 ViewController 中,因为在这种情况下,UITextFieldDelegate 字段连接到 de CustomTableViewCell class.我尝试创建此 CustomTableViewCell 的对象,然后点击文本字段变量并尝试更改文本 属性,但结果只是空白。
import UIKit
class RegisterViewController: UIViewController {
let registrationCell = RegisterViewCell()
let personalCell = PersonalViewCell()
var selectedRow : String = ""
let registerArray = ["UserName"]
let passwordArray = ["Password", "Confirm Password"]
let personalArray = ["I am"] //Identity of the user, female or male
let personalPickerArray = ["Famale", "Male"]
@IBOutlet weak var registerTableView: UITableView!
@IBOutlet weak var personalPickerView: UIPickerView!
override func viewDidLoad() {
super.viewDidLoad()
personalPickerView.isHidden = true
personalCell.personalTextField?.inputView = personalPickerView
}
我已经为 TableView 和 Picker View 创建了扩展,我认为问题出在这里但我不确定:
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let personalCell = tableView.dequeueReusableCell(withIdentifier: "PersonalViewCell", for: indexPath) as! PersonalViewCell
personalCell.personalLabel?.text = personalArray[0]
personalCell.personalTextField.text = selectedRow
personalCell.accessoryType = .disclosureIndicator
return personalCell
}
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
if indexPath.row == 3 {
personalPickerView.isHidden = false
}
}
func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
let row = personalPickerArray[row]
selectedRow = row
personalPickerView.isHidden = true
print(selectedRow)
}
自定义单元格Class文件
import UIKit
class PersonalViewCell: UITableViewCell {
@IBOutlet weak var personalLabel: UILabel!
@IBOutlet weak var personalTextField: UITextField!
override func awakeFromNib() {
super.awakeFromNib()
}
}
现在,当 selected 行时,我希望在嵌入自定义单元格 "Personal View Cell" 的 UITextField 中输入,但是当 selected 任何行时,UITextField 是只是空白
class RegisterViewController: UIViewController {
var selectedIndexPath:IndexPath?
/* code for class */
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
var selectedIndexPath = indexPath //store index path
if indexPath.row == 3 {
personalPickerView.isHidden = false
}
}
func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
let row = personalPickerArray[row]
selectedRow = row
personalPickerView.isHidden = true
/* check if we have an index path, and if the cell is correct type */
if let indexPath = selectedIndexPath {
if let cell = tableView.cellForRow(at: indexPath) as? PersonalViewCell {
cell.textField.text = personalPickerArray[row]
}
}
print(selectedRow)
}
}
我正在尝试一些相对简单的方法,但我无法解决这个问题。我有一个注册视图控制器,其中嵌入了 UITableView。具有 CustomsCells 的 TableView 嵌入了三种自定义单元格。最后一个是使用 UITextfield 自定义的,当 selected 假设从底部触发 PickerView 时,用户可以 select 在那里形成所需的偏好。除了一件小事,一切都很好;当任何行被 selected 文本应该是文本字段的输入时,但这并没有发生。
我在网上试过几段代码,但大多数都是关于文本字段在同一个 ViewController 中,因为在这种情况下,UITextFieldDelegate 字段连接到 de CustomTableViewCell class.我尝试创建此 CustomTableViewCell 的对象,然后点击文本字段变量并尝试更改文本 属性,但结果只是空白。
import UIKit
class RegisterViewController: UIViewController {
let registrationCell = RegisterViewCell()
let personalCell = PersonalViewCell()
var selectedRow : String = ""
let registerArray = ["UserName"]
let passwordArray = ["Password", "Confirm Password"]
let personalArray = ["I am"] //Identity of the user, female or male
let personalPickerArray = ["Famale", "Male"]
@IBOutlet weak var registerTableView: UITableView!
@IBOutlet weak var personalPickerView: UIPickerView!
override func viewDidLoad() {
super.viewDidLoad()
personalPickerView.isHidden = true
personalCell.personalTextField?.inputView = personalPickerView
}
我已经为 TableView 和 Picker View 创建了扩展,我认为问题出在这里但我不确定:
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let personalCell = tableView.dequeueReusableCell(withIdentifier: "PersonalViewCell", for: indexPath) as! PersonalViewCell
personalCell.personalLabel?.text = personalArray[0]
personalCell.personalTextField.text = selectedRow
personalCell.accessoryType = .disclosureIndicator
return personalCell
}
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
if indexPath.row == 3 {
personalPickerView.isHidden = false
}
}
func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
let row = personalPickerArray[row]
selectedRow = row
personalPickerView.isHidden = true
print(selectedRow)
}
自定义单元格Class文件
import UIKit
class PersonalViewCell: UITableViewCell {
@IBOutlet weak var personalLabel: UILabel!
@IBOutlet weak var personalTextField: UITextField!
override func awakeFromNib() {
super.awakeFromNib()
}
}
现在,当 selected 行时,我希望在嵌入自定义单元格 "Personal View Cell" 的 UITextField 中输入,但是当 selected 任何行时,UITextField 是只是空白
class RegisterViewController: UIViewController {
var selectedIndexPath:IndexPath?
/* code for class */
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
var selectedIndexPath = indexPath //store index path
if indexPath.row == 3 {
personalPickerView.isHidden = false
}
}
func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
let row = personalPickerArray[row]
selectedRow = row
personalPickerView.isHidden = true
/* check if we have an index path, and if the cell is correct type */
if let indexPath = selectedIndexPath {
if let cell = tableView.cellForRow(at: indexPath) as? PersonalViewCell {
cell.textField.text = personalPickerArray[row]
}
}
print(selectedRow)
}
}