SwiftUI:NavigationButton初始化程序给出错误

时间:2019-06-30 13:45:01

标签: swift swiftui

在我的SwiftUI视图之一中,我有以下代码:

NavigationButton(destination: DetailView()) {
    Text(verbatim: "Start")
}

Xcode无法生成代码并给出以下错误:

'(DetailView, @escaping () -> Text) -> NavigationButton<Text, DetailView>' is not convertible to '(DetailView, Bool, @escaping () -> Bool, () -> Text) -> NavigationButton<Text, DetailView>'

我相信Xcode认为我正在使用init(destination: Destination, isDetail: Bool, onTrigger: () -> Bool, label: () -> Label)初始化程序,但是我正在使用init(destination: Destination, label: () -> Label)初始化程序。

奇怪的是,我正在使用的文档没有记录(https://developer.apple.com/documentation/swiftui/navigationbutton),但是它在我见过的多个教程中都使用过,例如https://www.hackingwithswift.com/quick-start/swiftui/how-to-push-a-new-view-using-navigationbutton

所以我的问题是:我使用的初始化程序是错误的还是有避免错误的方法?

更新:问题已解决,请参见注释!

2 个答案:

答案 0 :(得分:0)

尝试以下代码:-

struct ContentView: View {
    var body: some View {
        NavigationView {
            NavigationButton(destination: DetailView()) {
                Text("Click")
                }.navigationBarTitle(Text("Navigation"))
        }
    }
}
struct DetailView: View {
    var body: some View {
        Text("Detail")
    }
}
struct ContentView_Previews : PreviewProvider {
    static var previews: some View {
        ContentView()
    }
}

答案 1 :(得分:0)

此外,“ Xcode 11 Beta”的早期版本(和一些视频)显示了对“ NavigationButton”的使用,但不再受支持,已被“ NavigationLink”替换。