Loading...

How to open the Settings view in a SwiftUI app on macOS 14.0 (Sonoma)?

question swiftui swift
Ram Patra Published on September 30, 2023

In macOS 14.0 (Sonoma), Apple removed support for NSApp.sendAction to open the Settings view in your SwiftUI app. You now have to use SettingsLink like below:

if #available(macOS 14.0, *) { // open Settings view on macOS 14.0+
    SettingsLink {
        HStack {
            Image(systemName: "gearshape")
            Text("Preferences")
        }
    }
} else { // open Settings view on macOS 13.0
    Button {
        NSApp.sendAction(Selector(("showSettingsWindow:")), to: nil, from: nil)
    } label: {
        HStack {
            Image(systemName: "gearshape")
            Text("Preferences")
        }
    }
}

And, if you want to support even older versions of macOS, you have to add one more if condition and open the Settings view like below:

NSApp.sendAction(Selector(("showPreferencesWindow:")), to: nil, from: nil)

Take your presentation to the next level.

Put your face and name on your screen.

Your to-dos on your menu bar.

Fill forms using your right-click menu.

Ram Patra Published on September 30, 2023
Image placeholder

Keep reading

If this article was helpful, others might be too

question swiftui swift September 8, 2024 How to make Squircle shape in SwiftUI and how to easily convert it to a circle or a rectangle?

To create a squircle shape (a combination of a square and a circle, also known as a superellipse) in SwiftUI, you can define a custom shape by conforming to the Shape protocol and implementing the superellipse formula. The formula for a superellipse is:

question swiftui March 29, 2024 How to group different style modifiers and reuse them across multiple SwiftUI views?

In SwiftUI, you can create custom view modifiers to encapsulate common styling configurations and reuse them across different views. Here’s how you can create and reuse a custom view modifier:

question swiftui March 6, 2023 How to render the icon on a menu bar as a template in SwiftUI?

Setting your app’s icon on the menu bar as a template makes it to adapt to light and dark modes automatically without you doing anything. To do this, you have to use this constructor of MenuBarExtra class.

Like my work?

Please, feel free to reach out. I would be more than happy to chat.