NSSavePanel accessoryView: почему не отображается моя кнопка?

Я создаю панель сохранения с accessoryView, который содержит один флажок. Я могу заставить его работать, когда я создаю кнопку, используя:

NSButton(checkboxWithTitle: "Check Me", target: self, action: #selector(checkBoxSelected))

Но это дает мне предупреждение, что этот конкретный инициализатор NSButton требует macOS 10.12, и мне нужно поддерживать 10.10.

Вот моя настройка savePanel:

@IBAction func save(_ sender: NSButton) {
    let savePanel = NSSavePanel()
    savePanel.accessoryView = accessoryView()
    savePanel.runModal()
}

И вот как я создаю свой внешний вид в Сьерре

func accessoryView() -> NSView {
    let checkbox = NSButton(checkboxWithTitle: "Check Me", target: self, action: #selector(checkBoxSelected))
    let view = NSView(frame: NSRect(x: 0, y: 0, width: 400, height: 100))
    view.addSubview(checkbox)
    return view
}

Но это не работает (кнопка не появляется)

func accessoryView() -> NSView {
    let checkbox = NSButton()
    checkbox.setButtonType(NSSwitchButton)
    checkbox.title = "Check Me"
    checkbox.state = 1
    checkbox.target = self
    checkbox.action = #selector(checkBoxSelected)

    let view = NSView(frame: NSRect(x: 0, y: 0, width: 400, height: 100))
    view.addSubview(checkbox)
    return view
}

1 ответ

Понял.

Нужно использовать NSButton.init(frame:)

Спасибо

Другие вопросы по тегам