Code: with this code i am navigating to views between(ProfileView(), HomeNew, NotificationsTabView, MessageTabView) very sharp i mean something like very fast change but i need it could be more smoothly change from one view to other
because of my code if i quickly change views one by one then slightly before view dummy data design for a sec showing in current view..
so i need very smooth navigation between views. so how to achieve smooth navigation between views. plz guide me.
struct TabContainerViewNew: View {
@Binding var index: Int?
@State private var showSideMenu = false
@State private var gotoSearch = false
init(index: Binding<Int?>) {
self._index = index
UITabBar.appearance().isHidden = true
}
let tabs = [("Menu", "Menu_New"), ("My profile", "user"), ("Home", "MenuNew_Home"), ("Notification", "MenuNew_Notification"), ("Message", "MenuNew_Message")]
var body: some View {
ZStack(alignment: .bottom) {
if let index = index {
TabView(selection: Binding(
get: { index },
set: { newValue in
self.index = newValue
}
)) {
ProfileView()
.tabItem {
Label("My profile", image: "icn_settings_tab")
}
.tag(1)
HomeNew(showSideMenu: $showSideMenu)
.tabItem {
Label("Home", image: "icn_home_tab")
}
.tag(2)
NotificationsTabView(showSideMenu: $showSideMenu)
.tabItem {
Label("Notification", image: "icn_notifications_tab")
}
.tag(3)
MessageTabView(showSideMenu: $showSideMenu)
.tabItem {
Label("Message", image: "icn_message_tab")
}
.tag(4)
}
.tint(.white)
.transition(.slide)
}
VStack(spacing: 0) {
HStack(spacing: 0) {
ForEach(0..<tabs.count) { i in
if tabs[i].0 == "Menu" {
VStack {
Button(action: {
withAnimation {
showSideMenu.toggle()
}
}) {
Image(tabs[i].1)
.renderingMode(.template)
.tint(.white.opacity(0.6))
.padding(8)
}
Text(tabs[i].0)
.foregroundColor(.white.opacity(0.6))
.font(.system(size: 11))
}
.frame(maxWidth: .infinity)
} else {
TabButton(image: tabs[i].1, title: tabs[i].0, item: i, index: $index)
.frame(maxWidth: .infinity)
}
}
}
.padding(.horizontal, 7)
.background(Color.appGreen2)
}
}
.ignoresSafeArea()
.sideMenu(isShowing: $showSideMenu) {
SideMenuView(isShowingMenu: $showSideMenu)
}
}
}