SwiftUI: Добавление меню настроек в AppView

#macos #swiftui

Вопрос:

У меня есть приложение SwiftUI. Я могу добавлять меню в приложение, это довольно просто. Это добавляет дополнительное меню в строку меню. Но как мне добавить экран «О программе», экран «Настройки» или еще что-нибудь в существующее меню «Файл»?

Вот мой код:

 @main
struct MyApp: App
{
    var body: some Scene
    {
        WindowGroup
        {
             ContentView()
        }
        .commands 
        {
            CommandMenu("My menu") 
            {
                Button("Item 1") 
                {
                   print ("item 1")
                }
   
                Button("Preferences...") 
                {
                    preferencesWindowController.show()
                }
            }
        }
    }
}
 

Я также использую пакет настроек от sindresorhus

Ответ №1:

  • Чтобы добавить настройки… пункт меню вы добавляете Settings представление после группы окон
      WindowGroup {
         ContentView()
     }
      
     Settings {
         MyCustomSettingsView()
     }
 
  • Экран «О программе»уже включен в ваше приложение macOS, но вы можете настроить его, добавив в свой проект форматированный текстовый файл с именем «Credits.rtf».
  • Чтобы добавить что-либо в существующее меню , которое вы используете CommandGroup , в приведенных ниже примерах добавляется новый пункт меню после «Новое окно» в меню Файл
     CommandGroup(after: .newItem, addition: {
        Button { someAction() } label: { Text("Some Action" }
    })