簡體   English   中英

SwiftUI:如果不在列表中,NavigationLink 不起作用

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM