SwiftUI - назначение NavigationLink создает представление с дополнительным пространством - PullRequest
0 голосов
/ 09 июля 2020

Я сократил свою страницу входа до единственной ссылки NavigationLink, которая ведет к представлению списка в качестве пункта назначения. Проблема, как вы можете видеть на изображении ниже, заключается в том, что вместо хорошо разнесенного заголовка слева я получаю огромное пространство, как показано справа. Оба представления одинаковы, но справа - предварительный просмотр страницы в том виде, в котором она была разработана. Изображение слева - это предварительный просмотр страницы после перехода с экрана входа в систему.

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 : $0.name.localizedCaseInsensitiveContains(searchText)})) { customer in
                        NavigationLink(destination: CustomerDetailView(customer: customer)) {
                            CustomerRow(customer: customer)
                        }
                        .navigationBarTitle("Customers")
                    }
                }
            }
        }
        .navigationBarBackButtonHidden(true)
    }
}

1 Ответ

1 голос
/ 09 июля 2020

Вам не нужно NavigationView дважды. NavigationView должен обернуть представление верхнего уровня один раз, и он будет иметь все представления, по которым вы выполняли навигацию. Удалить NavigationView вместо VStack

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