Closed vchaubey-ontic closed 1 year ago
Hello, @vchaubey-ontic!
I did not get your question, can you please clarify using some examples/use cases reflecting your idea?
Ok, let me try. My implementation is something like this -
TabBar(selection: $selection, visibility: $visibility) {
Home()
.tabItem(for: TabItems.first)
Search()
.tabItem(for: TabItems.second)
AddView()
.tabItem(for: TabItems.third)
Notifications() {
.tabItem(for: TabItems.fourth)
More()
.tabItem(for: TabItems.fifth)
}
Right now every tab have their own view, right?, what I want to achieve is, when I click 4th tab i.e More
More()
, it should present on Most Recent / Previous selected tab like a popup
and on dismiss popup @state of Most Recent / Previous selected should persist so that it always looks a like a view presented on instead opening a new tab.Ex: I have to present some Menu on 4th tab and previous selected view should be visible.
@vikaschaubey57, got it. Unfortunately, there is no way to implement that using the toolkit provided by this library, but you can workaround that by wrapping More
view into some entity that will automatically on onAppear
call present your view as a sheet.
Here is quick and dirty way to achieve this:
// Wrapper.swift
struct Wrapper<Content: View>: View {
private let content: Content
@State private var isPresented: Bool = false
init(content: Content) {
self.content = content
}
var body: some View {
Color.clear
.sheet(isPresented: self.isPresented, content: { self.content })
.onAppear { self.isPresented = true }
}
}
// TabBar.swift
TabBar(selection: $selection, visibility: $visibility) {
Home()
.tabItem(for: TabItems.first)
Search()
.tabItem(for: TabItems.second)
AddView()
.tabItem(for: TabItems.third)
Notifications() {
.tabItem(for: TabItems.fourth)
Wrapper(content: More())
.tabItem(for: TabItems.fifth)
}
Hope it helps :)
Closing due to inactivity, feel free to reopen if the issue still exists
The idea behind doing this, I want to open a view on the top of previous selected view instead of opening a new view.