swift - 无法将数据从 UIPickerView 传递到 CustomTableViewCell

标签 swift uitableview uitextfield

我正在尝试一些相对简单的东西,但我找不到解决这个问题的方法。我有一个注册 View Controller ,其中嵌入了 UITableView。 TableView 有 CustomsCells 嵌入了三种自定义单元格。最后一个是使用 UITextfield 进行自定义,当选择时应该从底部触发 PickerView,以便用户可以从那里选择所需的首选项。除了一件小事外,一切都运转良好;当选择任何行时,文本应该是文本字段的输入,但这种情况没有发生。

我在互联网上尝试了几段代码,但大多数都是关于同一个 ViewController 中的文本字段,因为在本例中 UITextFieldDelegate 字段连接到 CustomTableViewCell 类。我尝试创建此 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)
    }

自定义单元类文件

import UIKit

class PersonalViewCell: UITableViewCell {


    @IBOutlet weak var personalLabel: UILabel!
    @IBOutlet weak var personalTextField: UITextField!


    override func awakeFromNib() {
        super.awakeFromNib()
    }
}

现在,当选择一行时,我希望在嵌入自定义单元格“个人 View 单元格”内的 UITextField 中有一个输入,但是当选择任何行时,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)
    }

} 

关于swift - 无法将数据从 UIPickerView 传递到 CustomTableViewCell,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55669368/

相关文章:

swift - 使用 Alamofire 从 API 获取响应

ios - UITableViewCell 中 UITextLabel 的大小

ios - iOS 中tableview 的分页问题

输入多个单词时,Swift UIText 字段抛出 nil 错误

iphone - iOS : Action Method to Dial Phone Number Upon User Tapping a Button

ios - 如何将 iPhone 应用程序中的 Web View 映射到 Apple Watch 应用程序

swift - 在具有重复随机结果的 AKSequencer 中调用随机 AKPlayer

Swift - 使用 UISearchController 和 NSPredicate 以及结构数组进行搜索

ios - 如何在 UITextField 之间放置一个字符

json - 使用 Alamofire API Rest 发送空数组