如何在swift3中的执行选择器中发送多个参数?

时间:2017-03-29 07:48:21

标签: ios swift3

我必须使用多个参数(两个字符串参数)实现执行选择器。我创建了一个函数。 如何在延迟方法后使用执行选择器实现此功能。

func addBorderLayer(textField: UITextField , placeHolder: String) {
    textField.layer.borderColor =  UIColor.init(colorLiteralRed: 254/255, green: 93/255, blue: 49/255, alpha: 1.0).cgColor
    textField.layer.borderWidth = 1.0
    textField.placeholder = placeHolder
}`

我这样称呼这个方法

 self.perform(#selector(SecurityQuestionViewController.clearBorderLayer(textField:placeHolder:)), with:(textField,"Test") , afterDelay: 0.5)

当我传递这样的参数时,在xcode中显示我的分段错误,但我的问题是如何在其中传递参数。传递参数的正确方法是什么?

1 个答案:

答案 0 :(得分:4)

使用(G)rand(C)entral(D)ispatch,它是基于块的,比performSelector更容易使用,你不需要调用额外的方法,直接更改文本字段属性,例如:

func addBorderLayer(textField: UITextField , placeHolder: String) {
    textField.layer.borderColor =  UIColor.init(colorLiteralRed: 254/255, green: 93/255, blue: 49/255, alpha: 1.0).cgColor
    textField.layer.borderWidth = 1.0
    textField.placeholder = placeHolder
    DispatchQueue.main.asyncAfter(deadline: .now() + .milliseconds(500)) { 
        textField.placeholder = "Test"
    }
}