У меня есть представление с именем MainNavigation, которое имеет плавающую кнопку над моими основными представлениями содержимого. Окно MainNavigation переключается на разные представления в зависимости от того, что выбрано. При отображении
У меня есть представление, которое содержит несколько прокруток. Я хочу, чтобы последняя прокрутка переместилась к выбранному представлению, очевидно, без упаковки представления в NavigationView ничего не происходит. Однако, когда я пытаюсь обернуть все в NavigationView, все превращается в какую-то боковую панель с кнопкой возврата.
Я удалил много форматирования и нерелевантного кода, чтобы сделать его короче, однако, если требуется более длинный код, чтобы понять, что происходит, я могу загрузить:
struct ProductList3: View {
@ObservedObject var selected = SelectedState()
var products: [ProductModel] = productData
var categories = Array(Set(productData.flatMap(\.categories)))
.sortedWithAll()
var activeApplications : Set<String> {
Set(products.flatMap { product -> [String] in
if product.categories.contains(selected.selectedCategory) {
return product.application
} else {
return []
}
})
}
private var gridItemLayout = [
GridItem(.flexible()),
GridItem(.flexible())
]
var body: some View {
NavigationView {
GeometryReader{ geo in
HStack {
VStack(alignment: .leading){
Text("Categories")
ScrollView(showsIndicators: false){
ForEach(categories, id: \.self) { item in
// LISTS CATEGORIES
}
}
.frame(height: geo.size.height * 0.3)
Text("Application")
ScrollView(showsIndicators: false){
ForEach(Array(activeApplications).sortedWithAll(), id: \.self) { item in
// LIST APPLICATIONS
}
}
}
.frame(width: geo.size.width * 0.3)
VStack(alignment: .leading){
Text("Products")
let matchedItems = products.filter { product in
let category = product.categories
for item in category {
if item == selected.selectedCategory {
let application = product.application
for item in application {
if item == selected.selectedApplication {
return true
}
}
}
}
return false
}
ScrollView {
LazyVGrid(columns: gridItemLayout) {
ForEach(matchedItems) { item in
NavigationLink(destination: ProductTabView(product: item, selected: selected)){
applicationListRow(product: item)
}
}
}
}
}
.frame(minWidth: 0, maxWidth: .infinity, minHeight: 0, maxHeight: .infinity, alignment: .topLeading)
}
}
}
}
}
Да, это исправлено. Спасибо!





Это ответ на ваш вопрос stackoverflow.com/a/61591692/12299030?