Почему swiftUI выдает ошибки для правильного кода? - PullRequest
0 голосов
/ 02 апреля 2020

SwiftUI дает мне ошибки и отказывается от сборки, когда я знаю, что код правильный. Например, следующий код работал все 15 минут go. Я попытался обернуть List в JumpToBookView в VStack и добавить Button под списком, и он начал выплевывать ошибки на моем Image в BookRow. Этот код компилировался и отображался в предварительном просмотре до того, как я добавил Button и VStack, после того как я удалил их, он все равно не позволит мне предварительно просмотреть представление. Я попытался очистить папку сборки, удалить производные данные и выйти из приложения, все одновременно, но все еще ничего. Нет предварительного просмотра, и проект не будет компилироваться. Для справки, проект в основном UIKit, но я пытаюсь включить в него SwiftUI, хотя это не должно иметь значения, потому что это представление нигде не вызывается. В настоящее время я использую последнюю версию XCode и приложил свой код и снимок экрана с ошибками. Для поиска я также вставлю здесь ошибки. Missing argument label 'imageName:' in call, Value of type 'Image' has no member 'resizable' и Cannot infer contextual base in reference to member 'fit'

enter image description here

import SwiftUI

struct JumpToBookView: View {
    var body: some View {
        List {
            BookRow(selected: true)
            BookRow(selected: true)
            BookRow(selected: true)
            BookRow(selected: true)
            BookRow(selected: true)
            BookRow(selected: true)
        }
    }

    func testJump()
    {
        print("test")
    }
}

struct BookRow: View {
    var selected: Bool
    var body: some View {
        ZStack {
            Rectangle()
                .fill(Color(RaiseColor.red))
            HStack{
                Text("1.2 What is an Ecosystem?")
                    .font(.title)
                    .fontWeight(.bold)
                    .foregroundColor(Color(.white))
                Spacer()
                Image(selected ? "pauseButton" : "playButton")
                    .resizable()
                    .aspectRatio(1, contentMode: .fit)
                    .frame(maxWidth: 25)
                    .foregroundColor(Color(.white))
            }
            .padding(.all)
        }
    }
}


struct JumpToBookView_Previews: PreviewProvider {
    static var previews: some View {
        JumpToBookView()
    }
}

РЕДАКТИРОВАТЬ: я просто хочу добавить, что он также работал с RaiseColor.red раньше, поэтому не должно быть проблем с этим пользовательским цветом.

Ответы [ 2 ]

0 голосов
/ 06 апреля 2020

В итоге проблема заключалась в том, что моя кодовая база ранее определила класс с именем Image, поэтому у SwiftUI возникли проблемы с выяснением, на какой Image я пытался ссылаться. Без внесения других изменений в кодовую базу эта проблема была решена путем указания SwiftUI в качестве родительского элемента для Image, что можно сделать с помощью следующего SwiftUI.Image(selected ? "pauseButton" : "playButton")". Это устраняет все проблемы, которые у меня были, но лучше всего было бы реорганизовать вашу кодовую базу, чтобы не было конфликтующих имен с классами и структурами SwiftUI.

0 голосов
/ 02 апреля 2020

Когда я заменяю

Rectangle()
    .fill(Color(RaiseColor.red))

на

Rectangle()
    .fill(Color.red)

все скомпилировано хорошо ... так что ищите ошибку в этом пользовательском цвете.

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