我正在macOS上用Swift编写应用程序。 我想创建一个带有垂直NSStackView的NSAlert,让用户从N个选项中选择一个。为此,我将我的NSStackView连接到我的NSAlert的accessoryView属性中,由于某种原因我的单选按钮不显示。
这是我迄今为止所做的尝试:
package.Status
这向我展示了我的NSAlert,其中有一个标有Foo的单选按钮。所以附件视图似乎有效。
现在我将单选按钮放在StackView中:
let a = NSAlert()
a.messageText = "Dummy1"
a.informativeText = "Dummy2"
a.addButton(withTitle: "OK")
let rb = NSButton(radioButtonWithTitle: "Foo", target: nil, action: nil)
a.accessoryView = rb
a.runModal()
现在单选按钮不再出现了。在StackView中添加更多单选按钮也无济于事。
答案 0 :(得分:0)
我能够做到这一点,但是由于我只需要固定大小,所以我没有设置任何约束。这是一个以固定宽度堆叠两个文本字段的示例:
func makeAccessoryView(usernameField: NSTextField, passwordField: NSTextField) -> NSView {
let stackView = NSStackView(views: [usernameField, passwordField])
let width = 300
let height = usernameField.frame.height + stackView.spacing + passwordField.frame.height
stackView.setFrameSize(NSSize(width: width, height: height))
stackView.translatesAutoresizingMaskIntoConstraints = true
stackView.orientation = .vertical
return stackView
}
// somewhere else...
let usernameField = NSTextField(...)
let passwordField = NSTextField(...)
alert.accessoryView = makeAccessoryView(usernameField: usernameField, passwordField: passwordField)