无法将委托分配给 UITextField,因为它在 Tableview [重复]

Posted

技术标签:

【中文标题】无法将委托分配给 UITextField,因为它在 Tableview [重复]【英文标题】:Unable to assign the delegate to UITextField as it is in in Tableview [duplicate] 【发布时间】:2016-09-13 17:30:29 【问题描述】:

我有一个表格视图。我正在动态创建UITextField。 但我无法触发其中的事件。

func tableView(_ tableView: UITableView, cellForRowAt indexPath:IndexPath) -> UITableViewCell 
        let cell = self.tableView.dequeueReusableCell(withIdentifier: "cell",for: indexPath) as! DynamicTableCell

        var dynamicTxtField1: UITextField = UITextField()
        dynamicTxtField1.backgroundColor = UIColor.white
        dynamicTxtField1.rightViewMode = .always
        dynamicTxtField1.layer.cornerRadius = 5;
        dynamicTxtField1.clipsToBounds = true
        dynamicTxtField1.borderStyle = .roundedRect
        // Here i am not able to assign the 
        //Error in this line // dynamicTxtField1.delegate = self 

        // Here object "self" is referring to the view. Because of this i am not able to fire any events of the UITextField 
        cell.addSubview(dynamicTxtField1)

请建议如何在这种情况下将委托分配给 UITextField,以便我可以触发事件以显示视图以从中选择一些值。

错误是:

"无法将 ViewName(classname) 的值赋给类型 UITextFieldDelegate"

上线:

dynamicTxtField1.delegate = self

【问题讨论】:

您遇到的错误是什么?您的self 是否符合UITextFieldDelegate 发布有关错误的问题时,您需要在问题中包含完整且准确的错误消息。 错误是“无法将 ViewName(classname) 的值分配给类型 UITextFieldDelegate”。 Self 不是指问题所在的 UITextFieldDelegate。我现在该怎么办? 我错误地添加了 UiTextViewDelegate 而不是 UiTextFieldDelegate。但我已经纠正了。仍然没有触发事件。 dynamicTxtField1.addTarget(self, action: "ButtonPressed", for: UIControlEvents.touchDown) 这对 UITextField 有用吗?????? 【参考方案1】:

enter image description here您应该在单元格的子类中创建您的textField,然后在您的cellForRowAtIndexPath 中修改其属性。你的班级是否实现了UITextFieldDelegate

编辑:试试这个

        textField.addTarget(self, action: #selector(ViewController.textfieldDidchange(_:)), forControlEvents: .ValueChanged)
        cell.contentView.addSubview(textField)

这是方法

func textfieldDidchange(textField: UITextField) 
//your code

【讨论】:

我错误地添加了 UiTextViewDelegate 而不是 UiTextFieldDelegate。但我已经纠正了。仍然没有触发事件。 dynamicTxtField1.addTarget(self, action: "ButtonPressed", for: UIControlEvents.touchDown) 这对 UITextField 有用吗?????? 如果你想在每次写信时调用一个方法,你需要自己的方法并使用.ValueChanged。 UITextFieldDelegate 不处理它。 你能举个例子吗?我想要 Tap 上的方法。因为我想在用户点击 textField 时转到另一个视图以显示表格视图 嗨垫,我试过你提到的方式。这是我的代码。 dynamicTxtField1.addTarget(self, action: Selector(DynamicSuperView.textFieldChanged(_:)), for: UIControlEvents.editingChanged) func textFieldChanged(textField: UITextField) print("TextField Changed!!!!!!!!!!!! ") 它抛出一个错误,说 textFieldChanged 不是这个类的成员 有效吗? DynamicSuperView 是 UIViewController 吗?

以上是关于无法将委托分配给 UITextField,因为它在 Tableview [重复]的主要内容,如果未能解决你的问题,请参考以下文章

初始化后如何为 UITextField 分配委托?

无法分配 UIPickerView 委托或数据源

将 self 分配给 UITextFieldDelegate 在 iOS 8 中而不是在 iOS 7 中工作

带有 mkmapview 和 uitextfield 委托函数的 Swiftui

UIAlertController 实用程序类无法调用 UITextField 委托或目标,但在 UIViewController 中工作

分配给委托的通用方法