无法将类型“ Binding <Int>”的值转换为预期的参数类型“ Binding <_>”


10

我正在尝试TabView使用以下代码在SwiftUI中创建一个:

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

但是我收到错误消息Cannot convert value of type 'Binding<Int>' to expected argument type 'Binding<_>'。我看到变量selection是整数,这是正确的类型,但是由于某些原因,警告仍然存在。

Answers:


9

我解决了这个问题。事实是TabView即使关闭中有一些错误,也显示此错误。所以创建的代码TabView是正确的,但问题是我初始化的方式DataGridPage。我将属性的名称更改typedatainside,DataGridPage但是在这里我仍在使用type属性。我修复了它,并停止向我显示警告。

我认为SwiftUI是一个新框架,在调试方面还有很多改进。我希望它会在将来成熟,我们将能够指出确切的错误,而不是模糊的表述。

现在,新代码如下所示:

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

希望它能帮助面临类似问题的人。


1
有同样的问题,现在可以解决。谢谢
gurehbgui

我的问题似乎很相似,但是我不记得要构造自己的观点(括号)。因此,就像我做了DataGridPage.tabItem {...而不是DataGridPage()。tabItem {...一样。
dwaz
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.