在NavigationView中使用函数会引发错误:无法将类型“ AnyView.Type”的返回表达式转换为类型“ AnyView”

时间:2020-05-05 15:16:40

标签: swift function swiftui

我在调用函数时遇到问题。它不是我在此应用中编写的第一个功能,但这是..“不同” xD

目前,我尝试显示一些具有说明,金额和类型的项目。在类型旁边,应该显示一个小图标。

我想用一个字符串保存图标的类型,所以它应该像这样:

用户选择配料的类型,例如“Getränke”,此值保存在我的类型变量中。调用我的函数myImage并将这种类型的配料保存在我的itemImage值中,并且我的itemImage值与图片关联。就像在下面的我的Switch案例中一样-用户选择“Getränke”变量类型=Getränke,而我的Switch案例选择了该值并将其保存在itemImage中。 (对于我的测试用例,只有一张图片,称为“ Drogerie”,这就是为什么每个案例都相同的原因; 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 个答案:

答案 0 :(得分:1)

可能您的意思是以下内容(但是不清楚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)
}