一次到达 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 }
我有一个包含两个 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 }