Adding a Help Menu to a SwiftUI App
When you create and run a SwiftUI Mac app project, the Help menu has a menu item named AppName Help, where AppName is the name of your app. If you choose that menu item, an alert opens saying help isn’t available for the app.
Help Books
The included menu item works only if your app has a Help Book bundled in the app. Many of Apple’s apps have Help Books. Choose Help > Xcode Help in Xcode to see an example of a Help Book.
Creating Help Books is painful. Apple’s Help Book Programming Guide was last updated in 2013, and there aren’t many articles online on creating Help Books.
Take Users to Your Site
For most apps it’s easier to add a page to your app’s website with your app’s help and add a menu item to go that page. You can even include a link on the page for people to download a user guide for your app. Creating a menu item that takes someone to your site involves the following steps:
- Create a view for the menu item.
- Create a SwiftUI link for the menu item.
- Add the menu item to the menu bar.
Creating the Link and Menu Item
A SwiftUI link takes two arguments. The first argument is the link name, which is the menu item text for menus. The second argument is the link destination. The following code shows an example of a menu item with a link:
struct HelpMenu: View {
var body: some View {
Group {
Link("Your App Website", destination: URL(
string: "https://www.your-site.com/your-app/")!)
// Place other Help menu items here.
}
}
}
Adding the Menu Item to the Menu Bar
Add a .commands
modifier to the window group or document group in the App
struct for your app. Add a command group for the menu, replacing the default Help menu item with your Help menu items.
.commands {
CommandGroup(replacing: .help) {
HelpMenu()
}
Do you want to add a help book to your app?
Earlier in this article I mentioned that creating a help book for a Mac app is painful. To help developers deal with this pain, I’m developing Phel, an app that creates help books from Markdown files.
Write your help pages in Markdown, import the help pages and images, hit the Publish button, and get an indexed help book you can add to your Xcode project.
You can download and try Phel at the Phel page.