Как переключаться между tabBar и панелью инструментов swiftUI?

В приложении «Файлы» после нажатия кнопки «Выбрать» панель вкладок переключается на панель инструментов.

Как я могу сделать это с помощью swiftUI?(Переключение между tabBar и панелью инструментов)

      struct tabBar: View {
  
    var body: some View {
        TabView {
            ContentView().tabItem {
                Image(systemName: "paperplane.fill")
                Text("tabBar")
            }
        }
        .toolbar {
            ToolbarItem(placement: .bottomBar, content: {
                Button(action: {
                }){
                    Text("toolBar1")
                }
         
            })
            ToolbarItem(placement: .bottomBar, content: {
                
                Button() {
                } label: {
                    Text("toolBar2")
                }
             
            })
        }

    }
}

1 ответ

Для iOS 16 и выше вы можете использоватьtoolbar(_:for:)метод переключения между видимым и скрытым состояниями. Кроме того, не забудьте обернуть представление вNavigationView, иначе настройка видимости нижней панели инструментов не сработает.

      import SwiftUI

struct ContentView: View {
    @State var shouldShowTabBar = false

    var body: some View {
        NavigationView {
            TabView {
                Group {
                    Button("Switch Between Tab Bar and Toolbar") {
                        shouldShowTabBar.toggle()
                    }
                    .tabItem {
                        Label("Tab 1", systemImage: "list.dash")
                    }

                    Text("Tab 2")
                        .tabItem {
                            Label("Tab 2", systemImage: "square.and.pencil")
                        }
                }
                .toolbar {
                    ToolbarItem(placement: .bottomBar) {
                        Button {

                        } label: {
                            Text("Toolbar Button")
                        }
                    }
                }
                .toolbar(shouldShowTabBar ? .visible : .hidden, for: .tabBar)
                .toolbar(shouldShowTabBar ? .hidden : .visible, for: .bottomBar)
            }
        }
    }
}

Если вам необходимо поддерживать iOS 14 и 15, вы можете проверить каждый элемент, должен ли он быть видимым, и скрыть/показать их один за другим.

      import SwiftUI

struct ContentView: View {
    @State var shouldShowTabBar = false

    var body: some View {
        NavigationView {
            TabView {
                Group {
                    Button("Switch Between Tab Bar and Toolbar") {
                        shouldShowTabBar.toggle()
                    }
                    .tabItem {
                        if shouldShowTabBar {
                            Label("Tab 1", systemImage: "list.dash")
                        }
                    }

                    Text("Tab 2")
                        .tabItem {
                            if shouldShowTabBar {
                                Label("Tab 2", systemImage: "square.and.pencil")
                            }
                        }
                }
                .toolbar {
                    ToolbarItem(placement: .bottomBar) {
                        if !shouldShowTabBar {
                            Button {

                            } label: {
                                Text("Toolbar Button")
                            }
                        }
                    }
                }
            }
        }
    }
}
Другие вопросы по тегам