MacOS SwiftUI добавить кнопку в NSToolbar (не катализатор) - PullRequest
0 голосов
/ 20 февраля 2020

Я начал создавать приложение с использованием катализатора, и мне понравилась идея использовать один код для всех трех устройств Apple. Проблема в том, что у меня не может быть простого раскрывающегося списка в приложении катализатора, поэтому я решил разделить приложение и использовать swiftui, но для Ma c и iOS, чтобы у меня было больше элементов управления в стиле Ma c, таких как раскрывающийся список.

Я провел все прошлые выходные, выясняя, как заставить панель инструментов работать в катализаторе, и я наконец смог. Поэтому, когда я перенес приложение на Ma c I go, следующая ошибка в моей забавной панели инструментов c в делегате панели инструментов

Use of unresolved identifier 'UIBarButtonItem'

Я потратил всю ночь, пытаясь разберись, как добавить эту простую кнопку на панель инструментов и никуда не деться. Сегмент управления работает нормально, но не может добавить кнопку. Пока я просто использую элемент управления сегментом (так как он работает) с одной кнопкой и только текстом.

, так как мне добавить кнопку (и использовать системные значки) в NSToolBar на Ma c swiftui приложение?

func toolbar(_ toolbar: NSToolbar, itemForItemIdentifier itemIdentifier: NSToolbarItem.Identifier, willBeInsertedIntoToolbar flag: Bool) -> NSToolbarItem? {
        if (itemIdentifier == tbi1) {
            let tbi = NSToolbarItemGroup(itemIdentifier: itemIdentifier, titles: ["Accounts","Budgets"], selectionMode: .selectOne, labels: ["One","Two"], target: self, action: #selector(tbi1_click))
            tbi.selectedIndex = 0
            return tbi
        }
        else if (itemIdentifier == tbi2) {
            let bbi1 = UIBarButtonItem(barButtonSystemItem: .add, target: self, action: #selector(tbi2_click))
            let tbi = NSToolbarItem(itemIdentifier: itemIdentifier, barButtonItem: bbi1)
            return tbi
        }
        return nil
}

1 Ответ

0 голосов
/ 21 февраля 2020

Использование неразрешенного идентификатора 'UIBarButtonItem'

Если вы хотите использовать смешанный код для iOS и macOS, вы можете условно разделить его в зависимости от того, что доступно, используя конструкции, подобные ниже

    #if canImport(UIKit)
    // use here UIBarButtonItem and iOS related code

    #elseif canImport(AppKit)
    // use here NSToolbarItem and macOS related code

    #else
       fatalError("Not supported platform")
    #endif
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...