I have a basic tabview with 2 tabs. Tab 2 has a button to a modal sheet with a Page Style tabview imbedded in a Navigation Stack and added toolbar. When adding the Navigation Stack I get an unwanted white space at the bottom of the sheet view pages. I have tried using .ignoreSafeArea(edges: .bottom)
in many places no solution and I'm stumped on this one. What am I missing here? How do I get rid of this unwanted white space? Is my navigation stack in the wrong place? Seems like such a simple design to be such a problem.
iOS 16.1
Xcode 14.2
struct HomeView: View {
@State private var pageIndex = 0
var body: some View {
TabView(selection: $pageIndex) {
PageOne()
.tabItem {
Label("Page 1", systemImage: "star")
}.tag(0)
PageTwo()
.tabItem {
Label("Page 2", systemImage: "bookmark")
}.tag(1)
}
}
}
struct PageOne: View {
var body: some View {
VStack {
Text("Page 1")
}
}
}
struct PageTwo: View {
@State private var sheetIsShowing = false
var body: some View {
VStack {
Text("Page 2")
Button("Show Sheet") {
self.sheetIsShowing.toggle()
}
}
.fullScreenCover(isPresented: $sheetIsShowing) {
SheetView(sheetIsShowing: $sheetIsShowing)
}
}
}
struct SheetView: View {
@Binding var sheetIsShowing: Bool
var body: some View {
NavigationStack {
TabView {
SheetTabView1()
SheetTabView2()
}
.tabViewStyle(PageTabViewStyle(indexDisplayMode: .never))
.toolbar {
ToolbarItem(placement: .navigationBarLeading) {
Button {
self.sheetIsShowing.toggle()
} label: {
Text("Cancel")
}
}
}
}
.ignoresSafeArea(edges: .bottom)
}
}
struct SheetTabView1: View {
@State private var text1 = ""
@State private var text2 = ""
var body: some View {
List {
TextField("Enter Text", text: $text1)
TextField("Enter Text", text: $text2)
}
}
}
struct SheetTabView2: View {
@State private var text1 = ""
@State private var text2 = ""
var body: some View {
List {
TextField("Enter Text", text: $text1)
TextField("Enter Text", text: $text2)
}
}
}