我必须使用多个参数(两个字符串参数)来实现执行选择器。我创建了一个函数。 如何用perform selector after delay方法实现这个功能。
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 中显示段错误,但我的问题是如何在其中传递参数。传递参数的正确方法是什么?
最佳答案
使用 (G)rand (C)entral (D)ispatch,它是基于 block 的,比 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"
}
}
关于ios - 如何在 swift 3 的 performselector 中发送多个参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43087450/