Use Enums for Tags in SwiftUI

Jay Wilson
2 min readMay 14, 2020

This article assumes you know what an Enum or Enumeration in Swift is, and will explain why they are a perfect use case for tags in iOS and macOS development. If you want to read more about Enums, the Swift website is a great resource!

What are tags?

A tag is an Int that is assigned in a view. If you create a new iOS app in Xcode that is a Tabbed app, you'll notice that the 2 tab views have a .tag() associated with each view. In the gist below, you can see that on lines 16 and 25.

If you have a lot of tabs in this view, then you might get confused about which tag number is associate with which tab. Enums can help make these tags more descriptive and more readable.

How do Enums help?

Enums have cases that are labeled and can conform to the Hashable protocol, which is needed for tags in SwiftUI.

An example of an Enum for views in a todo app can look like this

When declaring the enum, we need to make sure that it conforms to the Hashable protocol. We don't need to do anything else besides adopt it since there are no associated values with the cases. If there were associated values, then we would need to make sure those values are conforming to the protocol.

Those enum cases in the gist above are a lot more readable than the numbers. We know from a glance what view will be taken by pressing that tab.

How to implement the Enum in the app

Now, I am going to implement Tabs into the SwiftUI app created earlier. After declaring the enum in ContentView.swift, I need to change the State to be the inbox view, so the value of state needs to be Tabs.inbox. Next, I need to change the tags values to Tabs.inbox, Tabs.projects, and Tabs.settings. The gist below shows the final code of the project.

Line 4 shows the new State assignment and lines 22, 28, and 40 show the new tag values.

Now, it’s a bit easier to read which tab is assigned to each view.

The completed project can be cloned from GitLab.

If you enjoyed this post and want more, please consider subscribing to my Patreon and checking out my other posts!

If you don’t like having more subscriptions, consider buying me a coffee by clicking this link.

Sign up to discover human stories that deepen your understanding of the world.

Free

Distraction-free reading. No ads.

Organize your knowledge with lists and highlights.

Tell your story. Find your audience.

Membership

Read member-only stories

Support writers you read most

Earn money for your writing

Listen to audio narrations

Read offline with the Medium app

Jay Wilson
Jay Wilson

Written by Jay Wilson

I like to solve problems using Swift, make YouTube videos, and take photos. I also really enjoy a good cup of coffee.

No responses yet

Write a response