使用委托方法

时间:2017-08-02 12:50:07

标签: ios swift delegates

我浏览了一些源代码,说明了文本字段的基本用法以及属于文本字段委托协议的委托方法的实现。现在虽然我理解了大部分代码,但我不确定为什么或如何在委托方法中引用文本字段对象而不引用文本字段属性的名称。

因此,假设您在视图控制器中有一个名为myCrazyTextField的文本字段属性,那么为什么或如何使用委托方法,例如:

func textFieldShouldReturn(_ textField: UITextField) -> Bool {
    textField.resignFirstResponder()
    return true
}

仅使用' textField'?

来引用您的文字字段对象

如同,我想知道为什么不是:

myCrazyTextField.resignFirstResponder()

而不是

textField.resignFirstResponder()

4 个答案:

答案 0 :(得分:1)

我们这些委托方法是通用的。它们仅适用于您执行以下操作的文本字段

myCrazyTextField.delegate=self

执行此操作后,这些文本字段将响应您的方法textFieldShouldReturn

在方法中,您可以单独识别文本字段,如

if textfield == myCrazyTextField

答案 1 :(得分:1)

您可以同时使用$(document).ready(function() { var table = $('.tableContent').DataTable({ "columnDefs" : [ { "className" : "dt-center", "targets" : "_all" } ] }); $("#osFamilySelect1").selectmenu({ change : function(event, ui) { dropdownSelect = ui.item.value; table.column(9).search(dropdownSelect, false, true, true).draw(); } }); }); myCrazyTextFieldtextField引用当前有效的文本字段。

答案 2 :(得分:1)

将委托设置为self,并为textField添加一个唯一标记,以便知道哪个textField确实输入了该方法。

YourTextfield.delegate = self

YourTextfield.tag = 1

在委托方法中:

If (textfield.tag == 1){ //YourTextfield is the textfield referenced}

希望这有帮助!

答案 3 :(得分:0)

如果一个UITextField中有多个ViewController,只要在UITextField或代码中,就会为每个文本字段调用Storyboard的每个委托方法您使用

ViewController设置为特定文本字段的代理

yourTextfield.delegate = self

您可以在委托方法中检查textfield当前引用的文本字段,但如果您希望委托方法适用于所有文本字段,则无需执行此操作。