gpt4 book ai didi

swift - 在 SwiftUI 中使用 Tab Bar 弹出到 Root View

转载 作者:行者123 更新时间:2023-12-03 13:41:40 25 4
gpt4 key购买 nike

在 SwiftUI 中,有什么方法可以像大多数 iOS 应用程序一样通过点击 Tab Bar 来弹出到 Root View ?
这是 example的预期行为。
enter image description here
我尝试使用 simultaneousGesture 以编程方式弹出 View 如下:

import SwiftUI


struct TabbedView: View {
@State var selection = 0
@Environment(\.presentationMode) var presentationMode
var body: some View {
TabView(selection: $selection) {
RootView()
.tabItem {
Image(systemName: "house")
.simultaneousGesture(TapGesture().onEnded{
self.presentationMode.wrappedValue.dismiss()
print("View popped")
})
}.tag(0)

Text("")
.tabItem {
Image(systemName: "line.horizontal.3")
}.tag(1)
}
}
}

struct RootView: View {
var body: some View{
NavigationView{
NavigationLink(destination:SecondView()){
Text("Go to second view")
}
}
}
}

struct SecondView: View {
var body: some View{
Text("Tapping the house icon should pop back to root view")
}
}
但似乎这些手势被忽略了。
非常感谢任何建议或解决方案

最佳答案

我们可以使用标签栏选择绑定(bind)来获取选中的索引。在此绑定(bind)上,我们可以检查选项卡是否已被选中,然后弹出到根目录进行选择导航。

struct ContentView: View {

@State var showingDetail = false
@State var selectedIndex:Int = 0

var selectionBinding: Binding<Int> { Binding(
get: {
self.selectedIndex
},
set: {
if $0 == self.selectedIndex && $0 == 0 && showingDetail {
print("Pop to root view for first tab!!")
showingDetail = false
}
self.selectedIndex = $0
}
)}

var body: some View {

TabView(selection:selectionBinding) {
NavigationView {
VStack {
Text("First View")
NavigationLink(destination: DetailView(), isActive: $showingDetail) {
Text("Go to detail")
}
}
}
.tabItem { Text("First") }.tag(0)

Text("Second View")
.tabItem { Text("Second") }.tag(1)
}
}
}

struct DetailView: View {
var body: some View {
Text("Detail")
}
}

关于swift - 在 SwiftUI 中使用 Tab Bar 弹出到 Root View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60109986/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com