Невозможно преобразовать значение типа «Binding <Int>» в ожидаемый тип аргумента «Binding <_>» - PullRequest
0 голосов
/ 06 ноября 2019

Я пытаюсь создать 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 является целым числом, что является правильным типом, но по какой-то причине предупреждение все еще там.

1 Ответ

1 голос
/ 06 ноября 2019

Я разобрался в проблеме. Дело в том, что TabView показывает эту ошибку, даже если в закрытии есть какая-то ошибка. Так что код создания TabView правильный, но проблема в том, как я инициализирую DataGridPage. Я изменил имя свойства type на data внутри 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)
    }
}

Надеюсь, это поможеткто-то сталкивается с подобной проблемой.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...