gpt4 book ai didi

view - 如何 : Use conditional custom background views for background modifier?

转载 作者:行者123 更新时间:2023-12-04 09:38:13 31 4
gpt4 key购买 nike

通常,如何使用三元运算符对修饰符进行条件更改是很直接的。但是,当我尝试在背景修饰符的两个自定义 View 之间切换时,出现此错误。如果您例如,情况并非如此直接指定颜色作为替代 View 。

错误:'? 中的结果值:' 表达式具有不匹配的类型 'BackgroundView1' 和 'BackgroundView2'

import SwiftUI

struct TestView: View {

@State var buttonPressed = false

var body: some View {

Button(action: {self.buttonPressed.toggle()}) {

Image(systemName: "circle.fill")
.background(self.buttonPressed ? BackgroundView1() : BackgroundView2()) // Error
// .background(buttonPressed ? Color.red : Color.green)
}

}
}

struct BackgroundView1: View {

var body: some View {

Color.red

}
}

struct BackgroundView2: View {

var body: some View {

Color.green

}
}

struct TestView_Previews: PreviewProvider {
static var previews: some View {
TestView()
}
}

最佳答案

View 必须是一种类型,这是可能的解决方案

Image(systemName: "circle.fill")
.background(Group {
if self.buttonPressed { BackgroundView1() }
else { BackgroundView2() }
})

替代方法是,如果 View 很简单(否则可能是性能问题),
    Image(systemName: "circle.fill")
.background(self.buttonPressed ? AnyView(BackgroundView1()) : AnyView(BackgroundView2()))

关于view - 如何 : Use conditional custom background views for background modifier?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62448813/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com