Ios 单击导航链接时不工作-快捷界面
我有一个名为Ios 单击导航链接时不工作-快捷界面,ios,xcode,swiftui,navigationview,swiftui-navigationlink,Ios,Xcode,Swiftui,Navigationview,Swiftui Navigationlink,我有一个名为MainNavigation的视图,在我的主要内容视图上有一个浮动按钮。MainNavigation视图根据所选内容切换到不同的视图。显示时 我有一个包含多个滚动视图的视图。我希望最终的scrollview导航到所选视图,显然没有将视图包装到NavigationView中,什么都不会发生。然而,当我尝试将所有内容包装到NavigationView中时,所有内容都会转换为一种带有后退按钮的边栏 我已经删除了很多格式和无关的代码,以使其更短,但是如果需要更长的代码来理解正在发生的事情,我
MainNavigation
的视图,在我的主要内容视图上有一个浮动按钮。MainNavigation
视图根据所选内容切换到不同的视图。显示时
我有一个包含多个滚动视图的视图。我希望最终的scrollview导航到所选视图,显然没有将视图包装到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)
}
}
}
}
}
struct ProductList3:视图{
@ObservedObject var selected=SelectedState()
var products:[ProductModel]=productData
变量类别=数组(集合(productData.flatMap(\.categories)))
.sortedWithAll()
var-activeApplications:Set{
在中设置(products.flatMap{product->[String]
如果product.categories.contains(selected.selectedCategory){
退货申请表
}否则{
返回[]
}
})
}
私有变量gridItemLayout=[
GridItem(.flexible()),
GridItem(.flexible())
]
var body:一些观点{
导航视图{
GeometryReader{geo-in
HStack{
VStack(对齐:。前导){
文本(“类别”)
滚动视图(显示指示器:false){
ForEach(categories,id:\.self){item in
//列出类别
}
}
.框架(高度:geo.size.height*0.3)
文本(“申请”)
滚动视图(显示指示器:false){
ForEach(数组(activeApplications).sortedWithAll(),id:\.self){item in
//列出应用程序
}
}
}
.框架(宽度:geo.size.width*0.3)
VStack(对齐:。前导){
文本(“产品”)
让matchedItems=products.filter{product进入
让category=product.categories
对于类别中的项目{
如果项目==已选定。已选定类别{
让应用程序=product.application
用于申请中的项目{
如果项==已选择。已选择的应用程序{
返回真值
}
}
}
}
返回错误
}
滚动视图{
LazyVGrid(列:gridItemLayout){
ForEach(matchedItems){中的项
NavigationLink(目标:ProductTabView(产品:项目,选定:选定)){
applicationListRow(产品:项)
}
}
}
}
}
.frame(最小宽度:0,最大宽度:。无穷大,最小高度:0,最大高度:。无穷大,对齐方式:。topLeading)
}
}
}
}
}
这是否回答了您的问题?是的,这已经解决了问题。非常感谢。