SwiftUI:如果不在列表中,则NavigationLink不工作

gblwokeq  于 2022-12-10  发布在  Swift
关注(0)|答案(6)|浏览(136)

我猜这可能是beta 3中的一个bug,因为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)
        }
    }
}

没有触发导航堆栈中的任何推送。视图看起来一点也不交互。如果有人找到一个解决方案会很好,除非苹果记录了这种行为,否则我会认为它在beta 4之前已经坏了。

ymdaylpp

ymdaylpp1#

Xcode版本11.3(11 C29)中的导航链接似乎有一个bug,我已经向苹果报告了这个bug。
注意:**这个问题只出现在模拟器中。它在真实的设备上工作正常。**感谢@djr
下面的代码在你第一次使用导航链接时可以正常工作。不幸的是,第二次使用时它就没有React了。

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()
    }
}
lpwwtiir

lpwwtiir2#

您实际上是在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!")
    }
}
yvt65v4c

yvt65v4c3#

导航链接

按下时触发导航演示的按钮。这是pushViewController的替代

NavigationView {
    NavigationLink(destination:
        Text("Detail")
        .navigationBarTitle(Text("Detail"))
    ) {
        Text("Push")
    }.navigationBarTitle(Text("Master"))
}

或者通过在其自己视图DetailView中使用组目标使其更易于阅读

NavigationView {
    NavigationLink(destination: DetailView()) {
        Text("Push")
    }.navigationBarTitle(Text("Master"))
}
qrjkbowd

qrjkbowd4#

在Xcode 11.3.1中,我遇到了同样的问题,但我必须退出Xcode并重新启动我的电脑。这显然解决了一个问题(当然现在是2021年),但我能够按照苹果的swiftui教程没有任何问题。我复制了这段代码并尝试了一下...对我来说工作得很好。也许问题是你的屏幕右下角的“播放”按钮被切换了。

agxfikkp

agxfikkp5#

试试这个:

VStack{
     NavigationLink(destination: DetailView()) {
         Text("Push")
     }.navigationBarTitle(Text("Your Text")).isDetailLink(false)
 }
sc4hvdpw

sc4hvdpw6#

试试这个:-

var body: some View {
        NavigationView {
            NavigationLink(destination: YourView()) {
                Text("Go!")
            }
        }
    }

相关问题