SwiftUI NavigationLink 如何到达另一个 SwiftUI 页面?

Posted

技术标签:

【中文标题】SwiftUI NavigationLink 如何到达另一个 SwiftUI 页面?【英文标题】:SwiftUI NavigationLink how to get to another SwiftUI page? 【发布时间】:2020-03-31 20:58:10 【问题描述】:

我正在尝试从一个 SwiftUI 视图转到另一个 SwiftUI 视图,并且我正在按照下面的代码使用 NavigationLink,但我收到了错误:无法调用类型为 'NavigationLink<_ _> 的初始化程序' 带有类型为 '(destination: PlaylistTable)' 的参数列表

下面是触发链接到下一个视图的按钮的代码:

struct MusicButton: View 
    var body: some View 
        NavigationView 
        Button(action: 
            NavigationLink(destination: PlaylistTable())
        )
         Image(systemName: "music.note.list")
            .resizable()
            .foregroundColor(Color.white)
            .frame(width: 25, height: 25, alignment: .center)
            .aspectRatio(contentMode: .fit)
            .font(Font.title.weight(.ultraLight))
            
        
    

【问题讨论】:

【参考方案1】:

不要将NavigationLink 放在Button 中会解决您的问题:

 NavigationView 

        NavigationLink(destination: PlaylistTable())
     Image(systemName: "music.note.list")
        .resizable()
        .foregroundColor(Color.white)
        .frame(width: 25, height: 25, alignment: .center)
        .aspectRatio(contentMode: .fit)
        .font(Font.title.weight(.ultraLight))
        
    

【讨论】:

【参考方案2】:

如果要使用按钮,请将导航链接移至背景。

struct MusicButton: View 

    @State var isActive = false

    var body: some View 
        NavigationView 
        Button(action: 
            isActive.toggle()
        )
         Image(systemName: "music.note.list")
            .resizable()
            .foregroundColor(Color.white)
            .frame(width: 25, height: 25, alignment: .center)
            .aspectRatio(contentMode: .fit)
            .font(Font.title.weight(.ultraLight))
            
        
        .background(
             NavigationLink(destination: PlaylistTable(), isActive: $isActive) EmptyView()
         )
    

【讨论】:

以上是关于SwiftUI NavigationLink 如何到达另一个 SwiftUI 页面?的主要内容,如果未能解决你的问题,请参考以下文章

如果它不可见,SwiftUI 如何使 NavigationLink 工作?

如何使用 SwiftUI 将上下文菜单添加到 NavigationLink?

如何在 SwiftUI 列表中设置 NavigationLink

如何在 SwiftUI 的文本块中嵌入 NavigationLink?

SwiftUI如何摆脱NavigationView中通过NavigationLink链接的视图的不断初始化?

Swiftui:当用户点击推送通知时,如何导航到特定的 NavigationLink?