Tidak dapat mengonversi nilai tipe 'Binding <Int>' ke tipe argumen yang diharapkan 'Binding <_>'

10

Saya mencoba membuat TabViewdi SwiftUI dengan kode berikut:

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

Tapi saya menerima kesalahan Cannot convert value of type 'Binding<Int>' to expected argument type 'Binding<_>'. Saya melihat bahwa variabelnya selectionadalah integer, yang merupakan tipe yang benar tetapi peringatan masih ada karena beberapa alasan.

atulkhatri
sumber

Jawaban:

9

Saya telah memahami permasalahannya. Masalahnya adalah bahwa TabViewini menunjukkan kesalahan bahkan jika ada beberapa kesalahan dalam penutupan. Jadi kode untuk membuat TabViewsudah benar tetapi masalahnya adalah cara saya menginisialisasi DataGridPage. Saya mengubah nama properti typemenjadi datadi dalam DataGridPagetetapi di sini saya masih menggunakan typeproperti. Saya memperbaikinya dan berhenti menunjukkan peringatan kepada saya.

Saya pikir SwiftUI adalah kerangka kerja baru dan masih banyak perbaikan yang harus dilakukan dalam hal debugging. Saya berharap ini akan matang di masa depan dan kami akan dapat menunjukkan kesalahan yang tepat, bukan pernyataan yang tidak jelas ini.

Kode baru sekarang terlihat seperti ini:

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

Semoga ini membantu seseorang menghadapi masalah serupa.

atulkhatri
sumber
1
Punya masalah yang sama dan bisa menyelesaikannya sekarang. Terima kasih
gurehbgui
Masalah saya tampak serupa, tetapi saya tidak ingat untuk membangun pandangan saya (tanda kurung). Jadi itu seperti saya melakukan DataGridPage.tabItem {... bukannya DataGridPage (). TabItem {... Dalam kasus saya, tampilan tidak mengambil parameter apa pun di konstruktor.
dwaz