Loading...

@Published in SwiftUI

question swiftui swift
Ram Patra Published on August 31, 2024

In SwiftUI, the @Published property wrapper is used in combination with the ObservableObject protocol to automatically announce changes to properties of a class. This allows SwiftUI views that depend on these properties to update automatically when the data changes.

Here’s how @Published works:

  1. Declaration: When you mark a property with @Published, you’re indicating that changes to this property should be observed.

  2. ObservableObject: The class containing @Published properties must conform to the ObservableObject protocol. This protocol allows the class to broadcast that a property has changed.

  3. View Updates: Views that use this ObservableObject can observe changes by using the @ObservedObject or @StateObject property wrappers. When a @Published property changes, any view that depends on it will automatically re-render.

Example

import SwiftUI
import Combine

class UserSettings: ObservableObject {
    @Published var username: String = "Anonymous"
}

struct ContentView: View {
    @ObservedObject var settings = UserSettings()

    var body: some View {
        VStack {
            Text("Hello, \(settings.username)!")
            Button("Change Username") {
                settings.username = "New Username"
            }
        }
    }
}

Key Points

  • Automatic Updates: When settings.username changes, the ContentView automatically updates to reflect the new username.
  • Publisher: @Published creates a publisher for the property, allowing subscribers (like views) to react to changes.
  • Combine Integration: Behind the scenes, @Published integrates with the Combine framework, leveraging its capabilities to handle changes in data streams.

In essence, @Published is a way to bind data in a way that ensures the UI remains in sync with the underlying data model.

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 August 31, 2024
Image placeholder

Keep reading

If this article was helpful, others might be too

question swiftui iOS April 2, 2024 How to force an app or a view to open in landscape only mode in iOS using SwiftUI?

In SwiftUI, you can force an app to open in landscape mode by configuring the supported interface orientations in your app’s target settings. Here’s a step-by-step guide to configuring interface orientations in Xcode:

question swiftui swift September 13, 2024 How to add a character limit to a TextField in SwiftUI?

To add a character length limit to a TextField in SwiftUI, you can use a combination of Swift’s .onChange, .onPasteCommand modifier, and string manipulation to limit the number of characters the user can enter.

question swiftui macos September 3, 2024 Two ways to open a window programmatically in SwiftUI

SwiftUI provides an openWindow environment variable on macOS that allows you to open windows programmatically. Here’s how you can use it to open a new window when a button is clicked:

Like my work?

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