微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

SwiftUI:工作表在呈现后立即被关闭

如何解决SwiftUI:工作表在呈现后立即被关闭

我想要一个全屏 SwiftUI 视图,导航栏中有一个按钮,它在上面显示 SwiftUI 表。

不幸的是,编译器说:“目前,只支持呈现一张纸。 当前显示的工作表被关闭时,将显示一个工作表。"

这是我的代码

struct ContentView: View {
    var body: some View {
        EmptyView().fullScreenCover(isPresented: .constant(true),content: {
            FullScreenView.init()
        })
    }
}

struct FullScreenView: View{
    var body: some View {
        NavigationView{
            MasterView()
        }.navigationViewStyle(DoubleColumnNavigationViewStyle())
    }
}

struct MasterView: View {
    @State private var showingSheet = false
     var body: some View {
            Form {
                Section(header: Text("Header")) {
                    NavigationLink(destination: UIKitView()) { Text("hey") }
                }
            }
            .navigationBarItems(trailing:
             HStack {
                // First Try: Use a Button
                Button("Plus"){
                    showingSheet = true
                }.sheet(isPresented: $showingSheet){
                    AddContentView()
                }
                // Second Try: Use NavigationLink
                NavigationLink(
                    destination: AddContentView(),label: {
                        Image(systemName: "plus.square.fill")
                    })
             })
    }
}

问题

我想以全屏方式显示 SwiftUI 视图,所以我使用了 fullScreenCover(...)。有了这第一个“工作表”,我就无法展示第二个工作表,即我的 AddContentView() 视图。有什么办法可以解决这个问题吗?我真的很想把这张表放在上面:(

感谢您的帮助!!

请随意询问其他代码或是否有歧义。 :)

解决方法

错误信息说无法同时显示工作表(不要重叠工作表),因此如果您想查看并再次查看另一个视图,则必须使用 NavigationLink 并且仅在最后。表()

.sheet(isPresented: $showingSheet){
    AddContentView()
}

或 fullScreenCover()

.fullScreenCover(isPresented: $showingSheet){
    AddContentView()
}

已编辑:此代码中工作表未重叠两次。

import SwiftUI

struct ContentView: View {
    @State private var showingSheet = false
    var body: some View {
        NavigationView{
            Form {
                Section(header: Text("Header")) {
                    NavigationLink(destination: EmptyView()) { Text("Hey") }
                }
            }
            .navigationBarItems(trailing:
             HStack {
                // First Try: Use a Button
                Button("Plus"){
                    showingSheet = true
                }.sheet(isPresented: $showingSheet){
                    EmptyView()
                }
                // Second Try: Use NavigationLink
                NavigationLink(
                    destination: EmptyView(),label: {
                        Image(systemName: "plus.square.fill")
                    })
             })

        }.navigationViewStyle(DoubleColumnNavigationViewStyle())
    }
}

附言fullScreenCover() 属于工作表

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。