ios - 如何在 swift 3 的 performselector 中发送多个参数?

标签 ios swift3

我必须使用多个参数(两个字符串参数)来实现执行选择器。我创建了一个函数。 如何用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/

相关文章:

swift - 点击按钮更改 UICollectionView 单元格大小?

ios - 在 Swift 3 中对成员 'subscript' 的引用不明确

ios - 在 Objective-C 中使用正则表达式获取错误范围

ios - Xcode 关闭后找不到框架

Objective-C:如何读取 JSON?

ios - CLGeocoder 用法返回城市字符串?

ios - Xcode/模拟器 : How to run older iOS version?

ios - 写入文本文件并在 Xcode 8 和 Swift 3 中跨应用程序重新启动时保持更改

ios - UIBarButtonItem 取决于演示文稿。 swift 3

ios - 从 Swift 中的 Eureka Forms 获取值