Использование функции внутри NavigationView вызывает ошибку: невозможно преобразовать возвращаемое выражение типа AnyView.Type в возвращаемый тип AnyView - PullRequest
1 голос
/ 05 мая 2020

У меня проблема с вызовом моей функции. Это не первая функция, которую я написал в этом приложении, но это ... "другое" xD

В настоящее время я пытаюсь показать некоторые элементы с описанием, количеством и типом. И рядом с типом должен отображаться маленький значок.

Я хотел бы сохранить тип значка со строкой, чтобы он выглядел так:

Пользователь выбирает тип ингредиентов, например, "Getränke", и это значение сохраняется в моей переменной типа. Моя функция myImage вызывается и сохраняет этот тип ингредиентов в моем значении itemImage, а мое значение itemImage связано с изображением. Как и в моем случае Switch ниже - пользователь выбирает «Getränke», тип переменной = Getränke, и мой случай переключения выбрал это значение и сохранил его также в itemImage. (для моего тестового примера есть только одно изображение, называемое «Droger ie», поэтому все случаи одинаковы; o

В основном это мой текущий код для моего представления:

var body: some View {
    NavigationView {
        Form {
            Picker("Rezept oder Zutat", selection: $rezeptOrIngredients){
                ForEach(Self.subTitle, id: \.self)
                {
                    Text($0)
                }
            }

            if rezeptOrIngredients == "Zutat" {
                Picker("Type", selection: $type){
                    ForEach(Self.types, id:\.self){
                        Text($0)
                    }
                }
                TextField("Beschreibung", text: $beschreibung)
                HStack{
                    TextField("Menge", text: $menge)
                    Picker(selection: $unitType, label: Text("Anzahl Personen")){
                        ForEach(Self.units, id:\.self)
                        {
                            Text($0)
                        }
                    }.pickerStyle(WheelPickerStyle())
                        .frame(width: 100, height: 100)
                //My function////
                myImage()
                }
               } 
            }
        }
        .navigationBarTitle("Hinzufügen von...")
    }

И, конечно, мой код для функции:

func myImage() -> AnyView{
    switch type {
    case "Nahrungsmittel": itemImage = "Drogerie"
    case "Haushaltsartikel": itemImage = "Drogerie"
    case "Getränke": itemImage = "Drogerie"
    case "Obst und Gemüse": itemImage = "Drogerie"
    case "Tiefkühl": itemImage = "Drogerie"
    case "Drogerie und Kosmetik": itemImage = "Drogerie"
    case "Baby und Kind": itemImage = "Drogerie"
    case "Tierartikel": itemImage = "Drogerie"
    case "Süßigkeiten und Salzigkeiten": itemImage = "Drogerie"

    default: itemImage = "empty"
    }
    return AnyView //Shows Error
}

Я уже понял, зачем мне нужна функция, которая возвращает представление, но, честно говоря, я не могу понять, что означает этот тип AnyView, соответственно, что моей функции нужно вернуть ...

Спасибо за помощь!: -)

1 Ответ

1 голос
/ 05 мая 2020

Возможно, вы имели в виду следующее (однако непонятно, что такое type, а что itemImage, `потому что объявления не видны):

func myImage() -> some View {
    switch type {
    case "Nahrungsmittel": itemImage = "Drogerie"
    case "Haushaltsartikel": itemImage = "Drogerie"
    case "Getränke": itemImage = "Drogerie"
    case "Obst und Gemüse": itemImage = "Drogerie"
    case "Tiefkühl": itemImage = "Drogerie"
    case "Drogerie und Kosmetik": itemImage = "Drogerie"
    case "Baby und Kind": itemImage = "Drogerie"
    case "Tierartikel": itemImage = "Drogerie"
    case "Süßigkeiten und Salzigkeiten": itemImage = "Drogerie"

    default: itemImage = "empty"
    }
    return Image(itemImage)
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...