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进行一次