SwiftUI - NavigationLink 的目的地创建带有额外 space 的视图
SwiftUI - destination of NavigationLink creates view with extra space
我已将我的登录页面缩减为单个 NavigationLink,该 NavigationLink 将列表视图作为其目的地。正如您在下图中看到的那样,问题在于,我得到的不是左侧漂亮的 spaced 标题,而是右侧显示的巨大 space。两种视图都相同,但右侧的视图是页面设计时的预览。左图是从登录界面出来后的页面预览。
struct ContentView: View {
var body: some View {
NavigationView {
NavigationLink(destination: CustomerView()) {
Text("login")
}
}
}
}
这是列表视图的代码:
var body: some View {
NavigationView {
VStack {
SearchBarView(text: $searchText)
.padding(.top, 0)
List {
ForEach(customers.filter({searchText.isEmpty ? true : [=12=].name.localizedCaseInsensitiveContains(searchText)})) { customer in
NavigationLink(destination: CustomerDetailView(customer: customer)) {
CustomerRow(customer: customer)
}
.navigationBarTitle("Customers")
}
}
}
}
.navigationBarBackButtonHidden(true)
}
}
你不需要 NavigationView
两次。 NavigationView
应该将顶级视图换行一次,它将覆盖您导航的所有视图。删除 NavigationView
超过 VStack
VStack {
List {
ForEach(0..<10) { index in
NavigationLink(destination: Text("Hello \(index)")) {
Text("\(index)")
}
}
}
}
.navigationBarTitle("Customers")
.navigationBarBackButtonHidden(true)
我已将我的登录页面缩减为单个 NavigationLink,该 NavigationLink 将列表视图作为其目的地。正如您在下图中看到的那样,问题在于,我得到的不是左侧漂亮的 spaced 标题,而是右侧显示的巨大 space。两种视图都相同,但右侧的视图是页面设计时的预览。左图是从登录界面出来后的页面预览。
struct ContentView: View {
var body: some View {
NavigationView {
NavigationLink(destination: CustomerView()) {
Text("login")
}
}
}
}
这是列表视图的代码:
var body: some View {
NavigationView {
VStack {
SearchBarView(text: $searchText)
.padding(.top, 0)
List {
ForEach(customers.filter({searchText.isEmpty ? true : [=12=].name.localizedCaseInsensitiveContains(searchText)})) { customer in
NavigationLink(destination: CustomerDetailView(customer: customer)) {
CustomerRow(customer: customer)
}
.navigationBarTitle("Customers")
}
}
}
}
.navigationBarBackButtonHidden(true)
}
}
你不需要 NavigationView
两次。 NavigationView
应该将顶级视图换行一次,它将覆盖您导航的所有视图。删除 NavigationView
超过 VStack
VStack {
List {
ForEach(0..<10) { index in
NavigationLink(destination: Text("Hello \(index)")) {
Text("\(index)")
}
}
}
}
.navigationBarTitle("Customers")
.navigationBarBackButtonHidden(true)