Impossible de convertir la valeur de type 'Binding <Int>' en type d'argument attendu 'Binding <_>'

10

J'essaie de créer un TabViewdans SwiftUI avec le code suivant:

@State var selection = 0

var body: some View {
    TabView(selection: $selection) {
        DataGridPage(type: "media").tabItem {
            Image(systemName: "photo.on.rectangle")
                .imageScale(.large)
                .foregroundColor(.yellow)
        }
        .tag(1)

        DataGridPage(type: "files").tabItem {
            Image(systemName: "doc.on.doc")
                .imageScale(.large)
                .foregroundColor(.yellow)
        }
        .tag(2)
    }
}

Mais je reçois une erreur Cannot convert value of type 'Binding<Int>' to expected argument type 'Binding<_>'. Je vois que la variable selectionest un entier, qui est le bon type mais l'avertissement est toujours là pour une raison quelconque.

atulkhatri
la source

Réponses:

9

J'ai compris le problème. Le fait est que TabViewmontre cette erreur même s'il y a une erreur dans la fermeture. Donc le code de création du TabViewest correct mais le problème est la façon dont j'initialise DataGridPage. J'ai changé le nom de la propriété typeendata dedans DataGridPagemais ici j'utilise toujours la typepropriété. Je l'ai réparé et il a cessé de me montrer l'avertissement.

Je pense que SwiftUI est un nouveau framework et il reste encore beaucoup à faire en termes de débogage. J'espère qu'il mûrira à l'avenir et que nous serons en mesure de localiser l'erreur exacte au lieu de cette vague déclaration.

Le nouveau code ressemble maintenant à ceci:

@State var selection = 0

var body: some View {
    TabView(selection: $selection) {
        DataGridPage(data: "media").tabItem {
            Image(systemName: "photo.on.rectangle")
                .imageScale(.large)
                .foregroundColor(.yellow)
        }
        .tag(1)

        DataGridPage(data: "files").tabItem {
            Image(systemName: "doc.on.doc")
                .imageScale(.large)
                .foregroundColor(.yellow)
        }
        .tag(2)
    }
}

J'espère que cela aide quelqu'un confronté à un problème similaire.

atulkhatri
la source
1
A eu le même problème et pourrait le résoudre maintenant. Merci
gurehbgui
Mon problème semblait similaire, mais je ne me souvenais pas de construire ma vue (parenthèses). C'était comme si j'avais fait DataGridPage.tabItem {... au lieu de DataGridPage (). TabItem {... Dans mon cas, la vue ne prenait aucun paramètre dans le constructeur.
dwaz