前提
以下のような画面遷移ができるアプリを作っているのですが、③DetailView(TabBar無し) のページから②ContentView(TabBar有り) に戻った時、TabBarが消えてしまう。(おそらく、TabBarの実装がない単純なContentViewに戻っている)
①HomeView(TabBar有り) > ②ContentView(TabBar有り) > ③DetailView(TabBar無し)
TabBar無しのページを作るためにこちらをDetailView.swiftに追加していますが、その原因なのかどうかもわからずつまずいてしまいました。
同じ状況になった方ご教示いただけますと幸いです><
.toolbar(.hidden, for: .tabBar)
実現したいこと
③DetailView(TabBar無し) のページから②ContentView(TabBar有り) に戻った時、TabBar有りのページを出現させたい
①HomeView(TabBar有り) > ②ContentView(TabBar有り) > ③DetailView(TabBar無し)
該当のソースコード
HomeView.swift
import SwiftUI struct HomeView: View { @State var selectedTab: Int = 0 var body: some View { TabView(selection: $selectedTab) { NavigationView { ContentView() } .tag(0) .tabItem { Image(systemName: "1.circle.fill") Text("Page1") } NavigationView { Page2View() } .tag(1) .tabItem { Image(systemName: "2.circle.fill") Text("Page2") } } } } struct HomeView_Previews: PreviewProvider { static var previews: some View { NavigationView { HomeView() } .environmentObject(CountModel()) } }
ContentView.swift
import SwiftUI struct ContentView: View { @EnvironmentObject var countModel: CountModel var body: some View { VStack { Text("Count of Page1") .font(.title) Text("\(countModel.num)") .font(.largeTitle) HStack(spacing: 20) { Button(action: { countModel.num -= 1 print("Current Number -->" ,countModel.num) }, label: { Text("-") .font(.largeTitle) .foregroundColor(Color.white) .frame(width: 20, height:20) .padding() .background(Color.blue) .cornerRadius(6) }) Button(action: { countModel.num += 1 print("Current Number -->" ,countModel.num) }, label: { Text("+") .font(.largeTitle) .foregroundColor(Color.white) .frame(width: 20, height:20) .padding() .background(Color.blue) .cornerRadius(6) }) } NavigationLink("Go to Detail", destination:DetailView()) .padding(.top, 60.0) } .padding() .navigationTitle("Page1") } } struct ContentView_Previews: PreviewProvider { static var previews: some View { NavigationView { ContentView() } .environmentObject(CountModel()) } }
DetailView.swift
import SwiftUI struct DetailView: View { @EnvironmentObject var countModel: CountModel @Environment(\.dismiss) private var dismiss var body: some View { VStack { Text("Count of Detail Page") .font(.title) Text("\(countModel.num)") .font(.largeTitle) Spacer() Button(action: { dismiss() }) { Text("Back to Page1") } } .toolbar(.hidden, for: .tabBar) } } struct DetailView_Previews: PreviewProvider { static var previews: some View { NavigationView { DetailView() } .environmentObject(CountModel()) } }
試したこと
DetailViewにはdestinationを指定した際に自動で付与される戻るボタンの他に、dismissを使ったボタンを作って見ましたが、同じようにTabBarがないContentViewに戻ってしまいました。
0 コメント