Loading...

How to loop through an enum in SwiftUI?

question swiftui swift
Ram Patra Published on September 8, 2024

In SwiftUI, looping through an enum is not directly possible without some extra work because enums in Swift don’t inherently support iteration. However, you can achieve this by making the enum CaseIterable, which automatically provides a collection of all cases in the enum.

Here’s how you can loop through an enum using CaseIterable:

Example

import SwiftUI

// Define your enum and make it conform to CaseIterable
enum Fruit: String, CaseIterable {
    case apple = "Apple"
    case banana = "Banana"
    case cherry = "Cherry"
}

struct ContentView: View {
    var body: some View {
        // Use List to loop over the enum cases
        List(Fruit.allCases, id: \.self) { fruit in
            Text(fruit.rawValue)
        }

        // Or, use ForEach to loop over the enum cases
        ForEach(Fruit.allCases) { fruit in
            Text(fruit.rawValue)
                .padding()
                .font(.title2)
        }
    }
}

struct ContentView_Previews: PreviewProvider {
    static var previews: some View {
        ContentView()
    }
}

Explanation

  • CaseIterable automatically synthesizes a static allCases property, which is an array containing all the cases of the enum.
  • You can loop through Fruit.allCases in a SwiftUI List or any other loop construct.
  • id: \.self ensures each fruit case is uniquely identifiable, which is necessary when using enums in views like List.

This is the easiest way to loop through an enum in SwiftUI.

Presentify

Take your presentation to the next level.

FaceScreen

Put your face and name on your screen.

KeyScreen

Show keypresses on your screen.

ToDoBar

Your to-dos on your menu bar.

SimpleFill

Fill forms using your right-click menu.

IconSim

Preview your Mac app icons.

Ram Patra Published on September 8, 2024
Image placeholder

Keep reading

If this article was helpful, others might be too

question swiftui swift October 7, 2024 How to zoom in and zoom out a SwiftUI view?

In a macOS or iOS app, you can easily add a zoom feature to any SwiftUI view with the scaleEffect modifier. In the below example, I am using a Slider to control the zoom level. Here’s how you can implement zooming in and out with a slider:

question swiftui macos September 29, 2025 Adding Tooltips to SwiftUI Views on macOS

Tooltips are a subtle but powerful way to improve usability on macOS. They give users extra context when they hover over buttons, text, or icons without cluttering the main UI. SwiftUI makes it easy to add tooltips — and also flexible enough to create custom ones when you need more control.

question swiftui swift February 19, 2025 How to change the window level to floating, popUpMenu, etc. in SwiftUI?

When developing macOS applications with SwiftUI, you might need to create floating windows that stay on top of other windows. While modern macOS versions (15+) make this straightforward with the .windowLevel(.floating) modifier, supporting older versions requires a different approach. In this post, I’ll show you how to create floating windows that work across different macOS versions.

Like my work?

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