Nie można przekonwertować wartości typu „Binding <Int>” na oczekiwany typ argumentu „Binding <_>”

10

Próbuję utworzyć TabVieww SwiftUI z następującym kodem:

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

Ale otrzymuję błąd Cannot convert value of type 'Binding<Int>' to expected argument type 'Binding<_>'. Widzę, że zmienna selectionjest liczbą całkowitą, co jest poprawnym typem, ale z jakiegoś powodu ostrzeżenie nadal tam jest.

atulkhatri
źródło

Odpowiedzi:

9

Zrozumiałem problem. Chodzi o to, że TabViewpokazuje ten błąd, nawet jeśli jest jakiś błąd w zamknięciu. Więc kod tworzenia TabViewjest poprawny, ale problemem jest sposób inicjowania DataGridPage. Zmieniłem nazwę nieruchomości typena datawewnątrz, DataGridPageale tutaj nadal używam typenieruchomości. Naprawiłem to i przestało pokazywać mi ostrzeżenie.

Myślę, że SwiftUI to nowy framework i wciąż ma wiele do zrobienia w zakresie debugowania. Mam nadzieję, że dojrzeje w przyszłości i będziemy w stanie wskazać dokładny błąd zamiast tego niejasnego stwierdzenia.

Nowy kod wygląda teraz tak:

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

Mam nadzieję, że pomaga to komuś, kto ma podobny problem.

atulkhatri
źródło
1
Miałem ten sam problem i mogłem go teraz rozwiązać. Dzięki
gurehbgui
Mój problem wydawał się podobny, ale nie pamiętałem, aby konstruować mój pogląd (nawiasy). To było tak, jakbym zrobił DataGridPage.tabItem {... zamiast DataGridPage (). TabItem {... W moim przypadku widok nie przyjął żadnych parametrów w konstruktorze.
dwaz