Não é possível converter o valor do tipo 'Vinculação <Int>' para o tipo de argumento esperado 'Vinculação <_>'

10

Estou tentando criar um TabViewno SwiftUI com o seguinte 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)
    }
}

Mas estou recebendo erro Cannot convert value of type 'Binding<Int>' to expected argument type 'Binding<_>'. Vejo que a variável selectioné um número inteiro, que é o tipo correto, mas o aviso ainda está lá por algum motivo.

atulkhatri
fonte

Respostas:

9

Eu descobri o problema. O problema é que TabViewmostra esse erro mesmo se houver algum erro no fechamento. Portanto, o código para criar o TabViewestá correto, mas o problema é o modo como estou inicializando DataGridPage. Alterei o nome da propriedade typepara datadentro, DataGridPagemas aqui ainda estou usando a typepropriedade. Eu consertei e ele parou de me mostrar o aviso.

Eu acho que o SwiftUI é uma nova estrutura e ainda há muito a fazer em termos de depuração. Espero que amadureça no futuro e que possamos apontar o erro exato em vez desta declaração vaga.

O novo código agora se parece com isso:

@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 ajude alguém que enfrenta problemas semelhantes.

atulkhatri
fonte
11
Teve o mesmo problema e poderia resolvê-lo agora. Obrigado
gurehbgui
Meu problema parecia semelhante, mas não me lembro de construir minha visão (parênteses). Por isso, foi como fiz DataGridPage.tabItem {... em vez de DataGridPage (). TabItem {... No meu caso, a exibição não recebeu nenhum parâmetro no construtor.
dwaz 7/03