Developer

Advanced

Custom Views

There are certain instances when you'll need to use a native SwiftUI view within Judo. This may be the case for a complex custom view that is bespoke to your product, or perhaps embedding a map or video player view. This can be done using a Component-type property in your Judo.


Overview

The Judo SDK supports overriding Component Properties with a custom SwiftUI view using the same properties API introduced previously which facilitates overriding Text, Number, and Image Properties.

Like text and image properties being passed to a Judo component via JudoView are bindable to Text and Image layers within that component, a SwiftUI view type property can be bound to Component Instance layer.

Set up your Judo file

Review our guide Using Custom SwiftUI Views to learn how to set up a Judo component to accept a custom SwiftUI view as a Component-type property.

Implement your custom SwiftUI view

Define your custom SwiftUI view to embed within your Judo UI as a custom component, and then pass it as a value to the JudoView using the property modifier.

struct ContentView: View {
    var body: some View {
        JudoView("Main")
            .property("customComponent", CustomView())
    }
}

/// This is the view you are going to embed within your Judo UI as a custom component.
struct CustomView: View {
    var body: some View {
        // custom SwiftUI, such as MapKit, AVPlayer, etc.
        // UIKit can be wrapped in a UIViewRepresentable.
    }
}
Previous
Responding to User Interaction