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

Posted

技术标签:

【中文标题】SwiftUI:NavigationButton 初始化程序给出错误【英文标题】:SwiftUI: NavigationButton initializer gives error 【发布时间】:2019-06-30 13:45:01 【问题描述】:

在我的一个 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: () -&gt; Bool, label: () -&gt; Label) 初始化器,但我使用的是 init(destination: Destination, label: () -&gt; Label) 初始化器。

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

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

更新:问题已解决,请参阅 cmets!

【问题讨论】:

你能分享整个视图的代码吗?在许多情况下,XCode 11 beta 显示错误的位置与实际发生的位置不同。 @BogdanFarca:这正是问题所在! 【参考方案1】:

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

【讨论】:

【参考方案2】:

试试下面的代码:-

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

【讨论】:

以上是关于SwiftUI:NavigationButton 初始化程序给出错误的主要内容,如果未能解决你的问题,请参考以下文章

navigationBarItems 中的 SwiftUI NavigationButton

如何在没有 SwiftUI 中的 NavigationButton 的情况下导航到 NavigationView 中的另一个视图?

SwiftUI NavigationButton:如何导航到不同的目的地

SwiftUI 官方教程

如何在 SwiftUI 中使用 SFSafariViewController?

在没有按钮的 SwiftUI 中呈现新视图