SwiftUI:NavigationLink如果不在列表中,将无法正常工作

时间:2019-07-05 07:44:38

标签: swift swiftui

我想这可能是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之前失效。

5 个答案:

答案 0 :(得分:8)

我已报告给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()
    }
}

答案 1 :(得分:1)

您实际上在NavigationView中吗?以下作品。但是,如果我错过了您的意思,也许您可​​以共享更多代码。

import SwiftUI

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

struct SomeView: View {
    var body: some View {
        Text("Detailed View Here!")
    }
}

答案 2 :(得分:1)

NavigationLink

一个按钮,当按下该按钮时会触发导航演示。这是pushViewController的替代品

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

或者通过使用组目标到自己的视图DetailView中使其更具可读性

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

答案 3 :(得分:0)

尝试一下:-

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

答案 4 :(得分:0)

在 Xcode 11.3.1 中,我遇到了同样的问题,但我只需要退出 xcode 并重新启动计算机。这显然解决了一个问题(当然现在是 2021 年),但我能够毫无问题地遵循苹果的 swiftui 教程。我复制了这段代码并进行了尝试……对我来说效果很好。也许问题是您屏幕右下角的“播放”按钮被切换了。