navigationBarItems 中的 SwiftUI NavigationButton

Posted

技术标签:

【中文标题】navigationBarItems 中的 SwiftUI NavigationButton【英文标题】:SwiftUI NavigationButton within navigationBarItems 【发布时间】:2019-06-14 23:10:12 【问题描述】:

我希望能够使用NavigationButton 导航到.navigationBarItems 中的新视图。这就是我期望的工作方式:

NavigationView 
    Text("Hello world")
    .navigationBarTitle(Text("Title"))
    .navigationBarItems(trailing:
        NavigationButton(destination: TestView()) 
            Text("Next")
        
    )

但是,“下一步”按钮没有任何作用!我知道 PresentationButton 提供了一个像这样的弹出视图:

NavigationView 
    Text("Hello world")
        .navigationBarTitle(Text("Title"))
        .navigationBarItems(trailing:
            PresentationButton(destination: TestView()) 
                Text("Next")
            
        )

但这不是我要找的。​​p>

【问题讨论】:

看起来像一个 SwiftUI 错误。漏洞百出,等后续版本修复。 我看到了同样的情况 - 我很想知道我们是否遗漏了什么,或者它是否确实是一个已确认的错误。 我还注意到,如果您调用 PresentationButton 一次,则无法再次调用它 - 所以可能是 BarButtonItems 周围的错误,或者正如 Josh 所说,我们可能完全遗漏了什么?跨度> 【参考方案1】:

正如我在 cmets 中告诉你的,这是一个错误。但它已得到修复,并且现在完全按照 Beta 5 的预期工作,但请记住,NavigationButton 已更改为 NavigationLink。所以它会是这样的:

struct ContentView: View 
    var body: some View
        NavigationView 
            Text("Hello world")
            .navigationBarTitle(Text("Title"))
            .navigationBarItems(trailing:
                NavigationLink(destination: TestView()) 
                    Text("Next")
                
            )
        
    

【讨论】:

工作了几个月,然后砰!停止工作。 SwiftUI 代码库是有史以来最不稳定的代码库之一。他们需要将其脱机并锁定一段时间。【参考方案2】:

如果您有一个列表并且需要在屏幕中导航,那么您应该使用NavigationLink 而不是NavigationButton,因为它最近发生了变化。例如:-

NavigationView
        
        List(landmarkData)  landmark in
            
            NavigationLink(destination: LandmarkDetail())
                
                LandmarkRow(landmark: landmark)
            
                
        
        

【讨论】:

以上是关于navigationBarItems 中的 SwiftUI NavigationButton的主要内容,如果未能解决你的问题,请参考以下文章

为啥我的 SwiftUI 应用程序在 `NavigationView` 中的 `navigationBarItems` 内放置 `NavigationLink` 后向后导航时崩溃?

SwiftUI 模态演示仅在 navigationBarItems 中有效

SwiftUI模态表示仅可从navigationBarItems进行一次

SwiftUI 列表正在使用 .navigationBarItems 进行剪辑 [重复]

隐藏按钮时navigationBarItems位置不一致

从 NavigationBarItem 转到 UINavigationViewController