Eu uso o modificador toolbar(.hidden, for: .tabBar) para ocultar a barra de abas na NotificationSettingScreen. Quando navego de volta, o SwiftUI demora um pouco para renderizar a barra de abas novamente, causando o atraso na exibição da barra. Como fazer com que ela seja exibida instantaneamente?
struct NotificationMenuButton: View {
var body: some View {
Menu {
NavigationLink(
destination: NotificationSettingScreen()
.toolbar(.hidden, for: .tabBar)
) {
Text("Notification Settings")
}
} label: {
Label("Options", systemImage: "ellipsis.circle")
}
}
}
struct NotificationScreen: View {
@EnvironmentObject private var notificationVM: NotificationViewModel
var body: some View {
NavigationStack {
NotificationMenuButton()
}
}
}
import SwiftUI
struct MainScreen: View {
@State private var selectedTabIdx = 1
var body: some View {
TabView(selection: $selectedTabIdx) {
NotificationScreen()
.tabItem {
Label(
"Notifications",
systemImage: hasUnreadNotifications
? "bell.badge.fill"
: "bell"
)
}
.tag(1)
}
}
}
Esse problema pode ser resolvido usando uma variável de estado para controlar a visibilidade da barra de guias.
.onAppear
retornos de chamada para a visualizaçãoNavigationLink
e para a visualização de destino..toolbarVisibility
precisa ser movido para o paiMenu
.