0

我想在导航栏中有一个带有按钮的全屏 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()视图。有什么办法可以解决这个问题吗?我真的很想把这张纸放在上面:(

谢谢你的帮助!!

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

4

1 回答 1

0

错误消息说工作表不能同时显示(不要重叠工作表),所以如果你想去查看并再次进入另一个视图,你必须使用 NavigationLink 并且只能在最后 .sheet()

.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())
    }
}

ps fullScreenCover() 属于工作表

于 2021-05-27T18:13:44.140 回答