一次到达 NSTextField 的两个 IBOutlets

Reach two IBOutlets of NSTextField at once

我有一个包含两个 NSTextField 的登录页面,所以我在 viewcontroller 中创建了两个 @IBOutlets。对于某些样式,我必须同时调用它们。我想给他们相同的属性,但我不想称他们为个体。那么我怎样才能立即联系到他们,给他们一个像 inputFields.isBordered = true

这样的 属性

对于 iOS swift 提供 @IBOutletCollection 但对于 MacOS 不提供。

    @IBOutlet weak var emailInput: NSTextField!
    @IBOutlet weak var passwordInput: NSTextField!

    override func viewWillAppear() {

        emailInput.isBordered = true
        passwordInput.isBordered = true

    }

所以我想要两个像 inputFields.isBordered = true 一样称呼他们,而不是单独称呼他们。

您可以通过多种不同的方式做到这一点。例如:

func modifyTextFields(_ closure: (NSTextField) -> Void) {
    closure(emailInput)
    closure(passwordInput)
}

// usage:
modifyTextFields { [=10=].isBordered = true }

或者,

var textFields: [NSTextField] { // this kind of works like an outlet collection
    return [emailInput, passwordInput]
}

// usage:
textFields.forEach { [=11=].isBordered = true }