我想从函数,文本或文本和按钮的VStack返回不同的 View 。这是我的尝试之一:

func buildResponseText2() -> some View {
    if (userData.success) {
        return VStack {
            Text("Well Done")
            Button("Play Again", action: {self.userData.reset()})
        }
    }
    return VStack {
        Text("Unlucky")
    }
}

这无法编译,我得到了错误



有没有一种方法可以返回具有异构内容的 View 容器(如VStack)?

最佳答案

使用类型擦除AnyView作为返回类型,如下所示

func buildResponseText2() -> AnyView {
    if (userData.success) {
        return AnyView(VStack {
            Text("Well Done")
            Button("Play Again", action: {self.userData.reset()})
        })
    }
    return AnyView(VStack {
        Text("Unlucky")
    })
}

08-24 16:59