-2

每当按下并选择头像时,我都希望有一个模态视图。但是在使用绑定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()}
            }
            
        }
    }
}

问题是我不知道如何检查绑定 var $selectedAvatar。无论我写什么,错误都是:

在此处输入图像描述

Cannot convert value of type 'Binding<Bool>' to expected argument type 'Bool'

帮助!!!谢谢!!

4

2 回答 2

0

对不起大家。我是粗心的。

但是我现在被 stackOverflow 的新“傲慢”伤害了。一个人在 Stack 中提出问题是最后的手段,因为他/她想要的最后一件事就是在所有其他专业和出色的开发人员面前用愚蠢的方式羞辱自己——这并不好玩。但是当被项目卡住时,我们不得不把脸/尊严扔到窗外。只是因为在问题描述中遗漏了细节,(当它与问题完全无关时),我认为它不值得“拇指向下”,更不用说一些了。

从长远来看,这种傲慢首先会损害拥有 stackOverflow 的目的。

isPresented只需要Binding<Bool>,这就是为什么提供 Bool 不起作用。 在此处输入图像描述

所以我通过使用找到了解决方法 在此处输入图像描述

现在工作正常:

//change avatar to struct Avatar (identifiable) 
@State var selectedAvatar: Avatar?

//change to "item" 
.sheet(item: self.$selectedAvatar ){ avatar in AvatarSummaryView(avatar: avatar)}


于 2021-05-31T03:37:43.763 回答
0

我不知道您的视图架构如何。

但是在这里你可以通过下面的代码修复你的编译错误。

.sheet(isPresented: .constant(!(self.selectedAvatar?.isEmpty ?? false)) ) { SimpleTestView()}
于 2021-05-30T06:25:08.420 回答