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)
Ram Patra Published on September 30, 2023
Image placeholder

Keep reading

If this article was helpful, others might be too

question swiftui April 2, 2024 How to declare an array of Views in SwiftUI?

In SwiftUI, you can declare an array of View using the standard Swift array syntax. Here’s how you can do it:

question swiftui macos October 15, 2023 How to display the app version and build number in a macOS/iOS SwiftUI app?

To display both the app version and build number in a SwiftUI macOS/iOS app, you can use the Bundle class to access information from the app’s Info.plist file. The Info.plist file contains various details about your application, including its version and build number. Here’s how you can do it:

question swiftui swift May 29, 2022 How to open a new window in SwiftUI?

Although many things in SwiftUI are idiomatic and straightforward, showing your view in a new window needs a bit of coding to do. Hence, this short post.