SwiftUI-NavigationLink的目标创建带有额外空间的视图

时间:2020-07-09 03:07:44

标签: listview swiftui swiftui-navigationlink

我将登录页面缩小为单个NavigationLink,该导航链接将List视图作为其目的地。正如您在下图中所看到的,问题是,我得到的是巨大的空间,而不是左边的标题,而右边的空间很好。两种视图是相同的,但是右侧的视图是页面的设计预览。左图是从登录屏幕进入后的页面预览。

struct ContentView: View {
    
    var body: some View {
        NavigationView {
            NavigationLink(destination: CustomerView()) {
                Text("login")
            }
        }
    }
}

enter image description here

以下是“列表”视图的代码:

var body: some View {
        
        NavigationView {
            VStack {
                SearchBarView(text: $searchText)
                    .padding(.top, 0)
                List {
                    ForEach(customers.filter({searchText.isEmpty ? true : $0.name.localizedCaseInsensitiveContains(searchText)})) { customer in
                        NavigationLink(destination: CustomerDetailView(customer: customer)) {
                            CustomerRow(customer: customer)
                        }
                        .navigationBarTitle("Customers")
                    }
                }
            }
        }
        .navigationBarBackButtonHidden(true)
    }
}

1 个答案:

答案 0 :(得分:2)

您不需要两次NavigationViewNavigationView应该包装一次顶层视图,并且将覆盖您浏览的所有视图。在NavigationView上删除VStack

 VStack {
    List {
        ForEach(0..<10) { index in
            NavigationLink(destination: Text("Hello \(index)")) {
                Text("\(index)")
            }
        }
    }
}
.navigationBarTitle("Customers")
.navigationBarBackButtonHidden(true)