我有一個帶有幾個選項卡的應用程式,其中一個選項卡上有一個嵌套幾次的 NavigationLink。
我希望能夠切換選項卡,并在回傳到另一個選項卡以展開指向根視圖的所有鏈接時。
我看過這些:
uj5u.com熱心網友回復:
您需要跟蹤父視圖中的選項卡選擇,然后將其傳遞到子視圖中,以便他們可以觀察更改。見狀在選擇的改變,孩子視圖可以重置一個@State是改變變數isActive的性質NavigationLink。
class NavigationManager : ObservableObject {
@Published var activeTab = 0
}
struct MyTabView: View {
@StateObject private var navigationManager = NavigationManager()
var body: some View {
TabView(selection: $navigationManager.activeTab) {
TabOne().tabItem { Image(systemName: "1.square") }.tag(0)
TabTwo().tabItem { Image(systemName: "2.square") }.tag(1)
}.environmentObject(navigationManager)
}
}
struct TabOne: View {
var body: some View {
Text("1")
}
}
struct TabTwo: View {
@EnvironmentObject private var navigationManager : NavigationManager
@State private var linkActive = false
var body: some View {
NavigationView {
NavigationLink("Go to sub view", isActive: $linkActive) {
TabTwoSub()
}
}.onChange(of: navigationManager.activeTab) { newValue in
linkActive = false
}
}
}
struct TabTwoSub: View {
var body: some View {
Text("Tapping \(Image(systemName: "1.square")) doesnt unwind this view back to the root of the NavigationView")
.multilineTextAlignment(.center)
}
}
注意:這將導致控制臺中出現“不平衡呼叫開始/結束外觀轉換”訊息——根據我的經驗,這不是錯誤,我們不必擔心
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/401295.html
