Impossibile convertire il valore di tipo 'Binding <Int>' nel tipo di argomento previsto 'Binding <_>'


10

Sto cercando di creare un TabViewin SwiftUI con il seguente codice:

@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)
    }
}

Ma sto ricevendo un errore Cannot convert value of type 'Binding<Int>' to expected argument type 'Binding<_>'. Vedo che la variabile selectionè intera, che è il tipo corretto ma l'avviso è ancora lì per qualche motivo.

Risposte:


9

Ho capito qual è il problema. Il fatto è che TabViewmostra questo errore anche se c'è qualche errore nella chiusura. Quindi il codice di creazione di TabViewè corretto ma il problema è il modo in cui sto inizializzando DataGridPage. Ho cambiato il nome della proprietà typedi datadentro DataGridPagema qui sto ancora utilizzando typeproprietà. L'ho risolto e ha smesso di mostrarmi l'avvertimento.

Penso che SwiftUI sia un nuovo framework e ha ancora molti miglioramenti da fare in termini di debug. Spero che maturi in futuro e saremo in grado di individuare l'errore esatto invece di questa vaga affermazione.

Il nuovo codice ora appare così:

@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)
    }
}

Spero che aiuti qualcuno di fronte a problemi simili.


1
Aveva lo stesso problema e poteva risolverlo ora. Grazie
gurehbgui

Il mio problema sembrava simile, ma non ricordavo di costruire il mio punto di vista (parentesi). Quindi è stato come ho fatto DataGridPage.tabItem {... invece di DataGridPage (). TabItem {... Nel mio caso, la vista non ha preso alcun parametro nel costruttore.
Dwaz
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.