[英]SwiftUI TapGesture Not Working with NavigationLink in List on iOS
[英]SwiftUI: NavigationLink not working if not in a List
我想这可能是 beta 3 中的一个错误,因为 NavigationView 都坏了。 但是这样的观点:
struct GenreBadge : View {
@EnvironmentObject var store: Store<AppState>
let genre: Genre
var body: some View {
NavigationLink(destination: MoviesGenreList(genre: genre).environmentObject(store)) {
RoundedBadge(text: genre.name)
}
}
}
不会触发导航堆栈中的任何推送。 该视图似乎根本没有交互性。 如果有人找到解决方法会很好,除非 Apple 正在记录这种行为,否则我会认为它在 beta 4 之前被破坏。
我已向 Apple 报告了 Xcode 版本 11.3(11C29) 中的导航链接似乎存在错误。
注意:此问题仅出现在模拟器中。 它在真实设备上运行良好。 感谢@djr
以下代码在您第一次使用导航链接时按预期工作。 不幸的是,它第二次变得没有反应。
import SwiftUI
struct ContentView : View {
var body: some View {
NavigationView {
VStack {
NavigationLink(destination: SomeView()) {
Text("Hello!")
}
}
}
}
}
struct SomeView: View {
var body: some View {
Text("Detailed View")
}
}
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
}
}
你真的在 NavigationView 里面吗? 以下作品。 但是,如果我错过了你的观点,也许你可以分享更多的代码。
import SwiftUI
struct ContentView : View {
var body: some View {
NavigationView {
VStack {
NavigationLink(destination: SomeView()) {
Text("Go!")
}
}
}
}
}
struct SomeView: View {
var body: some View {
Text("Detailed View Here!")
}
}
尝试这个:-
var body: some View {
NavigationView {
NavigationButton(destination: YourView()) {
Text("Go!")
}
}
}
导航链接
按下时触发导航演示的按钮。 这是 pushViewController 的替代品
NavigationView {
NavigationLink(destination:
Text("Detail")
.navigationBarTitle(Text("Detail"))
) {
Text("Push")
}.navigationBarTitle(Text("Master"))
}
或者通过使用组目的地到它自己的视图 DetailView 使其更具可读性
NavigationView {
NavigationLink(destination: DetailView()) {
Text("Push")
}.navigationBarTitle(Text("Master"))
}
在 Xcode 11.3.1 中,我遇到了同样的问题,但我只需要退出 xcode 并重新启动计算机。 这显然解决了一个问题(当然现在是 2021 年),但我能够毫无问题地遵循苹果的 swiftui 教程。 我复制了这段代码并进行了尝试……对我来说效果很好。 也许问题是您屏幕右下角的“播放”按钮被切换了。
尝试这个
VStack{ NavigationLink(destination: DetailView()) { Text("Push") }.navigationBarTitle(Text("Your Text")).isDetailLink(false) }
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.