No se puede convertir el valor del tipo 'Binding <Int>' al tipo de argumento esperado 'Binding <_>'

10

Estoy tratando de crear un TabViewSwiftUI con el siguiente código:

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

Pero estoy recibiendo un error Cannot convert value of type 'Binding<Int>' to expected argument type 'Binding<_>'. Veo que la variable selectiones entera, que es el tipo correcto, pero la advertencia sigue ahí por alguna razón.

atulkhatri
fuente

Respuestas:

9

Resolví el problema. Lo que pasa es que TabViewmuestra este error incluso si hay algún error en el cierre. Entonces, el código de creación TabViewes correcto, pero el problema es la forma en que estoy inicializando DataGridPage. Cambié el nombre de la propiedad typepor datadentro DataGridPagepero aquí todavía estoy usando la typepropiedad. Lo arreglé y dejó de mostrarme la advertencia.

Creo que SwiftUI es un nuevo marco y todavía tiene muchas mejoras que hacer en términos de depuración. Espero que madure en el futuro y podamos precisar el error exacto en lugar de esta vaga declaración.

El nuevo código ahora se ve así:

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

Espero que ayude a alguien que enfrenta un problema similar.

atulkhatri
fuente
1
Tenía el mismo problema y podía resolverlo ahora. Gracias
gurehbgui
Mi problema parecía similar, pero no recordaba construir mi punto de vista (paréntesis). Así que fue como lo hice con DataGridPage.tabItem {... en lugar de DataGridPage (). TabItem {... En mi caso, la vista no tomó ningún parámetro en el constructor.
Dwaz