处理 UItableView 中 UItextfield 的委托

Posted

技术标签:

【中文标题】处理 UItableView 中 UItextfield 的委托【英文标题】:Handling delegate of UItextfield in UItableView 【发布时间】:2016-12-10 03:00:59 【问题描述】:

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

    清除开头和结尾的空白(修剪空白) 辞去第一响应者(隐藏键盘) 设置单元格被选中 将字段的文本内容附加到 [String] 中

但到目前为止我只能执行其中的一部分,因为第 3 点在 TableViewCell 类中,但第 4 点在 TableViewController 中。 我试图为这两个类创建 UItextField 出口,但它不起作用 Text_NewName.delegate = self 或者我应该访问 UITableViewCell 类中的 [String] 吗?但是当我尝试将其作为子类时,迅速提示错误'从类中多重继承'

我相信我的知识一定有一些差距,使这些功能变得困难,如果有更简单的方法也可以让我知道。

代码如下:

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


【问题讨论】:

您需要选择是让 UITableViewController 子类还是 UITableViewCell 子类作为文本字段的委托。在这种情况下,将 UITableViewController 用作文本字段的委托是有意义的,这样它就可以轻松完成所有四项任务。 【参考方案1】:

管理PickNameTVC 上的所有内容。

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

【讨论】:

我确实尝试在 picknameTVC 的 viewdidload 中设置文本字段委托,今晚将尝试在 cellforrow 中设置它。除了运行时间不同,它们之间有什么不同?? 感谢您和@josh Hamet 的建议,我在专注于仅委托给 Table View Controller 之后弄清楚了如何使其工作。 let index = IndexPath(row: (namelist?.count)!, section: 0) self.tableView.selectRow(at: index, animated: true, scrollPosition: .bottom)

以上是关于处理 UItableView 中 UItextfield 的委托的主要内容,如果未能解决你的问题,请参考以下文章

需要在 Swift 中的 UITextField 委托方法中引用自定义 UITableViewCell 而不使用 tag 属性

在一个 UIViewController 中处理多个 UITableView 的最佳方法?

如何在动态 UITableView (iPhone) 中处理对 UITextFields 的引用

处理 UItableView 中 UItextfield 的委托

如何在 UITableView 中优雅地处理来自网络的可变长度文本?

防止 UITableView 在自定义子视图处理触摸时滚动