SwiftUI:如何在关闭第一个工作表时显示第二个工作表

守护骑士

.fullScreenCover当用户登录并按下 MyGarage 按钮时,我想创建一个带有 的侧边菜单.fullScreenCover会解散,主视图将导航到MyGarage查看。但如果用户未登录,.fullScreenCover则将关闭并.fullScreenCover出现一个 loginView 我的问题是,.fullScreenCover如果我将 2 个相同的内容.fullScreenCover放在主视图中它将无法工作有没有办法解决这个问题?对不起,我有点难以解释。

这是代码

侧边菜单视图

struct SideMenuView: View {
    @Environment(\.presentationMode) var presentationMode
    @Binding var showMyGarage: Bool
    @Binding var showSignIn: Bool
    var user = 0 //If user is 1, it is logged in
    var body: some View {
        NavigationView{
            VStack{
                Button(action: {
                    presentationMode.wrappedValue.dismiss()
                    if user == 1 {
                        self.showMyGarage = true
                    }else{
                        self.showSignIn = true
                    }
                }, label: {
                    Text("My Garage")
                })
            }
            .navigationBarTitleDisplayMode(.inline)
            .navigationBarItems(leading:
                                    HStack(spacing: 20){
                                        Button(action: {
                                            presentationMode.wrappedValue.dismiss()
                                        }, label: {
                                            Text("X")
                                        })
                                        Text("Main Menu")
                                    }
                )
        }.navigationViewStyle(StackNavigationViewStyle())
    }
}

主视图

struct HomeView: View {
    @State var showSideMenu = false
    @State private var showMyGarage = false
    @State var showSignIn = false

    var body: some View {
        VStack{

            Text("Home")
            
            NavigationLink(destination: MyGarageView(showMyGarage: $showMyGarage), isActive: $showMyGarage){
                EmptyView()
            }
            
        }
        .navigationBarItems(leading:
                                Button(action: {
                                    self.showSideMenu.toggle()
                                }, label: {
                                    Text("Menu")
                                })
            )
        .fullScreenCover(isPresented: $showSideMenu, content: {
            SideMenuView(showMyGarage: $showMyGarage, showSignIn: $showSignIn)
        })
        .fullScreenCover(isPresented: $showSignIn, content: {
            SignInView()
        })

    }
}

struct MyGarageView: View {
    @Binding var showMyGarage: Bool
    var body: some View {
        Text("MyGarage")
    }
}

struct SignInView: View {
    var body: some View {
        Text("Sign In")
    }
}
他的脾气

尝试将它们附加到不同的视图,例如

var body: some View {
    VStack{

        Text("Home")
          .fullScreenCover(isPresented: $showSideMenu, content: {
             SideMenuView(showMyGarage: $showMyGarage, showSignIn: $showSignIn)
          })
        
        NavigationLink(destination: MyGarageView(showMyGarage: $showMyGarage), isActive: $showMyGarage){
            EmptyView()
        }
        .fullScreenCover(isPresented: $showSignIn, content: {
           SignInView()
        })
    }
    .navigationBarItems(leading:
                            Button(action: {
                                self.showSideMenu.toggle()
                            }, label: {
                                Text("Menu")
                            })
        )
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

当第二个表中的布尔值为TRUE时,用第一个表覆盖第二个表的结果

如何加入两个表并使用第二个表覆盖第一个表?

只有当第一个表中的记录数大于或等于第二个表中的记录数时,我如何才能使左连接工作?

同一工作表中的相同 VBA 代码用于 2 组不同的表,第一个有效,第二个无效

如何联接2个表并显示所有第一个表,甚至第二个表的where子句未满足?

2个表的SQL查询如何填充第一个到第二个表的字段

在表单中,选择第二个表和第一个表

当第二个表引用第一个表中的主键时,如何将记录插入到两个表中?

如何在Django ORM中联接两个表而第一个表中没有任何列引用第二个表

如何从第一个表和第二个表中检索所有数据

如何通过第一个表值获取第二个表值

如何在不添加到第一个表的情况下将表行添加到第二个表中

Oracle:匹配第一个和第二个表的行

查询第二个表的第一个值

SQL Join:如何显示第一个表数据,即使是第二个表条件为假

如何通过单击第一个操作表中的按钮来显示第二个操作表,Swift

使用Android导航组件从第一个活动导航到第二个活动时如何关闭/完成第一个活动

如何在第一个表的列中指定的日期之前实现连接以获取第二个表中所有记录的计数

如何在oracle的第二个表中插入第一个表运行时间值?

如何在C#中从第一个表对第二个表进行数据排序

如何使用第二个 sql 的名称从第一个表中删除值

如何隐藏第二个按钮并仅在按下第一个按钮时显示它?

卷积神经网络,第二个conv层如何在第一个池化层上工作

phpMyAdmin在插入第一个表时执行触发器时,在第二个表中存储一个随机数

如何在第一个div的末尾开始第二个div?

如何在第一个动画之后播放第二个动画?

打开第二个工作簿触发第一个工作簿中的VBA代码

目标 C - 如何在触摸第一个 SKnode 时禁用第二个 Sknode 的触摸

如何在MySQL中创建视图以将第二个表中的行合并为第一个CSV列