【发布时间】:2024-04-28 11:35:02
【问题描述】:
每当按下并选择头像时,我都希望有一个模态视图。但是在使用绑定var的时候,没有办法知道是不是空字符串..
代码如下:
struct SelectAvatarView: View {
var role: String
@State var selectedAvatar: String?
var body: some View {
NavigationView{
ZStack {
BackgroundView()
VStack {
TitleTextView(title: "Choose your avatar:")
if role == "Parent" {
ParentAvatarView(selectedAvatar: $selectedAvatar)
}
else{
ChildAvatarView(selectedAvatar: $selectedAvatar)
}
Spacer()
}.padding()
.sheet(isPresented: !(self.$selectedAvatar.isEmpty) ) { SimpleTestView()}
}
}
}
}
问题是我不知道如何检查绑定变量$selectedAvatar。无论我写什么,错误都是:
Cannot convert value of type 'Binding<Bool>' to expected argument type 'Bool'
帮助!!!谢谢!!
【问题讨论】:
-
“按下并选中”是什么意思?您的代码中没有任何内容可以响应“按下”。从您的代码来看,您似乎只想在
selectedAvatar不为空时才显示它,对吗?所以这意味着如果一旦工作表被关闭,系统就会将selectedAvatar设置为空(假设您编写了自定义绑定)。这真的是你想要的吗? -
选择和按下的触发器在这里是无关紧要的 - 任何 SwiftUI 开发人员都可以理解,因为它是在另一个视图中实现 onTapGesture 的。这不是这里的问题。问题只是:我想检查环境变量是否为空字符串但没有成功。
-
我只是在问一些问题以填补空白,因为它并不是真正的minimal reproducible example。我认为,如果您查看我在 SO 上的跟踪记录,您会发现我在回答 SwiftUI 问题方面有着相当出色的历史,但我确实首先尝试完全了解情况。我询问绑定如何响应的问题的原因是,似乎让工作表清除
selectedAvatar一旦被解雇并不理想。因此,我试图更好地了解整个情况,以便更好地提供解决方案。 -
一般注释,当您使用
$variable时,您正在访问变量的绑定(SwiftUI 在更新变量时使用),但是当您使用variable时,它是值(字符串在您的情况下)您正在访问。并且您想检查该值是否为空,而不是绑定
标签: swift swiftui modal-view