Достигните двух IBOutlets NSTextField сразу - PullRequest
2 голосов
/ 23 марта 2019

У меня есть страница входа в систему с двумя NSTextFields, поэтому я создал два @IBOutlets в моем viewcontroller. Для некоторых стилей я должен назвать их обоих Я хочу дать им те же свойства, но я не хочу называть их индивидуальными. Итак, как я могу связаться с ними сразу, чтобы дать им свойство, как 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, а не как отдельные.

1 Ответ

3 голосов
/ 23 марта 2019

Вы можете сделать это разными способами.Например:

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

// usage:
modifyTextFields { $0.isBordered = true }

В качестве альтернативы

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

// usage:
textFields.forEach { $0.isBordered = true }
...