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)