Ios SwiftUI是否通过TabView以模式显示视图?

Ios SwiftUI是否通过TabView以模式显示视图?,ios,swift,xcode,swiftui,tabview,Ios,Swift,Xcode,Swiftui,Tabview,我有一个选项卡设置如下: struct ContentView: View { @State private var selection = 0 @State var newListingPresented = false var body: some View { TabView(selection: $selection){ // Browse BrowseView()

我有一个
选项卡
设置如下:

struct ContentView: View {
    @State private var selection = 0
    @State var newListingPresented = false

    var body: some View {
        TabView(selection: $selection){

            // Browse
            BrowseView()
                .tabItem {
                    VStack {
                        Image(systemName: (selection == 0 ? "square.grid.2x2.fill" : "square.grid.2x2"))
                    }
                }
                .tag(0)


            // New Listing
            NewListingView()
                .tabItem {
                    VStack {
                        Image(systemName: (selection == 1 ? "plus.square.fill" : "plus.square"))
                    }
                }
                .tag(1)

            // Bag
            BagView()
                .tabItem {
                    VStack {
                        Image(systemName: (selection == 2 ? "bag.fill" : "bag"))
                    }
                }
                .tag(2)

            // Profile
            ProfileView()
                .tabItem {
                    VStack {
                        Image(systemName: (selection == 3 ? "person.crop.square.fill" : "person.crop.square"))
                    }
                }
                .tag(3)
        }.edgesIgnoringSafeArea(.top)
    }
}
问题:
点击“New Listing”(新建列表)选项卡时,如何使其以模式显示
NewListingView
(在SwiftUI中称为sheet?)?

我想您正在寻找解决方案。将空选项卡项(
文本(“”
),在所需位置设置
图像
,并使用
.ontapsigner
)。在这个答案中,我只是展示了如何呈现<代码> ActualPuth。< /P> < P>如果我正确地理解了你的目标,你可以考虑下面的方法,基于使用事物包装视图的想法,它将目标视图作为一个表……/P> 下面是:

struct SheetPresenter<Content>: View where Content: View {
    @Binding var presentingSheet: Bool
    var content: Content
    var body: some View {
        Text("")
            .sheet(isPresented: self.$presentingSheet, content: { self.content })
            .onAppear {
                DispatchQueue.main.async {
                    self.presentingSheet = true
                }
            }
    }
}

如果您在工作表中工作后需要更改选项卡
选择
,您可以在
SheetPresenter
中传递一些附加参数,并在工作表的
onDismiss:(()->Void)?
回调中使用它。

很好!不过有一个建议,您可以使用
矩形
组件,而不是
SheetPresenter
主体中的空
文本
。谢谢!这很有效。请附上一个示例,说明如何更改工作表上的选项卡
选择
?基本上可以使用任何内容,而不是文本或矩形。我更喜欢使用
颜色。为此,请清除

// New Listing
    SheetPresenter(presentingSheet: $newListingPresented, content: NewListingView())
    .tabItem {
        VStack {
            Image(systemName: (selection == 1 ? "plus.square.fill" : "plus.square"))
        }
    }
    .tag(1)