DevB2F
DevB2F

Reputation: 5095

SwiftUI pass func as parameter where func has a generic parameter

I am trying to accept many different types of parameters (could be Int, String or something else) for this okClicked function inside ParentView.

struct ParentView: View {

    func okClicked<T>(userAnswer: GeneralAnswer<T>) {
    
    }

    var body: some View {
        ChildView(okClicked: okClicked)
    }

}

struct GeneralAnswer<T> {
    var value: T
}

This function actually works as expected. But now I need to pass this function to ChildView. How would the parameter be defined in ChildView?

struct ChildView: View {
    var okClicked: (GeneralAnswer<T>) -> () //does not compile

    var okClicked2<T>: (GeneralAnswer<T>) -> () //does not compile


    var body: some View {
        ...
    }
}

Upvotes: 0

Views: 60

Answers (1)

DevB2F
DevB2F

Reputation: 5095

Figured it out:

struct ParentView: View {
    func okClicked<T>(userAnswer: GeneralUserAnswer<T>) {
    
   }

    var body: some View {
        ChildView<Int>(okClicked: okClicked)
    }

}

struct ChildView<T>: View {
    //typealias T = MyType

    var okClicked: (GeneralUserAnswer<T>) -> ()

    var body: some View {
        Text("")
    }
}

Upvotes: 1

Related Questions