我必须使用多个参数(两个字符串参数)实现执行选择器。我创建了一个函数。 如何在延迟方法后使用执行选择器实现此功能。
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中显示我的分段错误,但我的问题是如何在其中传递参数。传递参数的正确方法是什么?
答案 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"
}
}