在UItableView中处理UItextfield的委托

时间:2016-12-10 03:00:59

标签: ios swift uitableview uitextfielddelegate

我的UItable中的一个单元格中有一个UItextfield,我想从文本字段返回后可以执行几个步骤:

  1. 在开始和结束时清除emptyspace(修剪空白)
  2. 辞职第一响应者(隐藏键盘)
  3. 设置单元格已选中
  4. 将字段的文本内容附加到[String]
  5. 但到目前为止我只能执行其中的一些,因为第3点在TableViewCell类中,但第4点在TableViewController中。 我试图让UItextField出口到这两个类,但它不起作用         Text_NewName.delegate = self 或者我应该访问UITableViewCell类中的[String]?但是当我试图将它作为子类时,swift提示错误'来自类的多重继承'

    我相信我的知识肯定存在一些差距,使这些功能变得困难,请让我知道是否有一种更简单的方法让它起作用。

    以下是代码:

    class Namelist_ADDName_TVCell: UITableViewCell, UITextFieldDelegate {
    override func awakeFromNib() {
        super.awakeFromNib()
        Text_NewName.delegate = self
    }
    @IBOutlet weak var Text_NewName: UITextField!
    
    func textFieldShouldReturn(_ textField: UITextField) -> Bool {
    
        textField.text = textField.text?.trimmingCharacters(in: .whitespaces)
        textField.resignFirstResponder()
    
        if textField.text != "" {
            self.isSelected = true
            return true
        } else {
            self.isSelected = false
            return false
        }
    
    }
    

    另一个快速文件:

    class PickNameTVC: UITableViewController, UITextFieldDelegate {
    
    var selectedlist : [String]?
    
    func textFieldShouldReturn(_ theTextfield: UITextField) -> Bool {
    
        if theTextfield.text != "" {
            selectedlist?.append(theTextfield.text!)
        }
        return true
    }
    }
    

1 个答案:

答案 0 :(得分:6)

管理PickNameTVC上的所有内容。

创建单元格时设置delegate override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell方法将您的委托设置为cell.textField.delegate = self(其中cell是您在该方法中出列的单元格。)