Der Wert vom Typ 'Binding <Int>' kann nicht in den erwarteten Argumenttyp 'Binding <_>' konvertiert werden.

10

Ich versuche eine TabViewin SwiftUI mit folgendem Code zu erstellen :

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

Aber ich erhalte einen Fehler Cannot convert value of type 'Binding<Int>' to expected argument type 'Binding<_>'. Ich sehe, dass die Variable selectioneine Ganzzahl ist, was der richtige Typ ist, aber die Warnung ist aus irgendeinem Grund immer noch da.

atulkhatri
quelle

Antworten:

9

Ich habe das Problem herausgefunden. Die Sache ist, dass TabViewdieser Fehler auch dann angezeigt wird, wenn beim Schließen ein Fehler vorliegt. Der Code zum Erstellen des TabViewist also korrekt, aber das Problem ist die Art und Weise, wie ich initialisiere DataGridPage. Ich habe den Namen der Eigenschaft typein datainside geändert , DataGridPageaber hier verwende ich immer noch die typeEigenschaft. Ich habe es repariert und es hat aufgehört, mir die Warnung zu zeigen.

Ich denke, SwiftUI ist ein neues Framework und es gibt noch viel zu verbessern in Bezug auf das Debuggen. Ich hoffe, es wird in Zukunft reifen und wir könnten den genauen Fehler anstelle dieser vagen Aussage genau bestimmen.

Der neue Code sieht jetzt so aus:

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

Hoffe, es hilft jemandem, der vor einem ähnlichen Problem steht.

atulkhatri
quelle
1
Hatte das gleiche Problem und konnte es jetzt lösen. Danke
gurehbgui
Mein Problem schien ähnlich zu sein, aber ich erinnerte mich nicht daran, meine Ansicht (Klammern) zu konstruieren. Es war also so, als hätte ich DataGridPage.tabItem {... anstelle von DataGridPage (). TabItem {... In meinem Fall hat die Ansicht keine Parameter im Konstruktor übernommen.
Dwaz