Неможливо перетворити значення типу "Прив'язка <Int>" до очікуваного типу аргументу "Прив'язка <_>"


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

Відповіді:


9

Я зрозумів проблему. Річ у тім, що 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)
    }
}

Сподіваюся, це допоможе комусь, хто стикається з подібною проблемою.


1
Була така ж проблема і зараз можна було б її вирішити. Спасибі
gurehbgui

Моя проблема здавалася подібною, але я не пам’ятав будувати свій погляд (дужки). Так було, як я робив DataGridPage.tabItem {... замість DataGridPage (). TabItem {... У моєму випадку представлення не приймало жодних параметрів у конструкторі.
dwaz
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.