无法将委托分配给 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 [重复]的主要内容,如果未能解决你的问题,请参考以下文章
将 self 分配给 UITextFieldDelegate 在 iOS 8 中而不是在 iOS 7 中工作
带有 mkmapview 和 uitextfield 委托函数的 Swiftui
UIAlertController 实用程序类无法调用 UITextField 委托或目标,但在 UIViewController 中工作