.searchable 内的 NavigationLink 不起作用

2024-02-15

我了解它的新功能,但这似乎是非常基本的功能,但不在这里。当实施一个.searchable在新的 iOS 15 中,NavigationLink 似乎根本不起作用。

理想情况下,可搜索将生成一个带有 ForEach 的过滤列表,对于每个项目,导航链接可以根据您的选择将您带到另一个视图。 ForEach 和 list 可以工作并且看起来很漂亮,但它不会带你去任何地方。

看 WWDC21,他们谈论了很多.searchable,但给出的演示/示例很少..

这是一个简单的例子,没有 ForEach 循环,这表明它根本不起作用..我错过了什么吗?

任何见解表示赞赏:

import SwiftUI

struct ContentView: View {
    
    @State private var term = ""
    
    var body: some View {
        NavigationView {
            Text("Hello, world!")
                .padding()
        }
        .searchable(text: $term) {
            NavigationLink(destination: SecondView()) {
                Text("Go to second view")
            }
        }
    }
}

struct SecondView: View {
    var body: some View {
        Text("Goodbye!")
            .padding()
    }
}

NavigationLink必须始终在里面NavigationView,无论如何。如果你想把它放在外面,就像里面一样.searchable,你应该使用程序化导航isActive https://www.hackingwithswift.com/quick-start/swiftui/how-to-use-programmatic-navigation-in-swiftui.

struct ContentView: View {
    
    @State private var term = ""
    @State private var isPresenting = false
    
    var body: some View {
        NavigationView {
            
            /// NavigationView must only contain 1 view
            VStack {
                Text("Hello, world!")
                    .padding()
                
                /// invisible NavigationLink
                NavigationLink(destination: SecondView(), isActive: $isPresenting) { EmptyView()}
            }
        }
        .searchable(text: $term) {
            Button { isPresenting = true } label: {
                Text("Go to second view")
            }
        }
    }
}

struct SecondView: View {
    var body: some View {
        Text("Goodbye!")
            .padding()
    }
}

Result:

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

.searchable 内的 NavigationLink 不起作用 的相关文章

随机推荐