我正在SwiftUI中开发一个非常简单的应用程序,并且设法为List创建了一个NavigationButton,将我带到DetailViewController。 我想在右上角有一个“ +”按钮,将其添加到我的列表中:
navigationBarItems(trailing:
NavigationButton(destination: DetailVC()) {
Image(systemName: "plus")
.resizable()
.frame(width: 20, height: 20)
}
)
问题是,当我点击按钮时,它无法导航到我的DetailVC。
我也尝试过:
.navigationBarItems(trailing:
PresentationButton(destination: DetailVC()) {
Image(systemName: "plus")
.resizable()
.frame(width: 20, height: 20)
}
)
使用此代码的问题是,它没有在DetailVC上显示“后退”按钮,而是从底部显示,并且无法返回到我的ContentView
要正确导航到导航栏中的正确项目是什么?
谢谢你,尼科
答案 0 :(得分:1)
在SwiftUI中,您可以使用NavigationButton来导航应用。
只需将您的PresentationButton
替换为NavigationButton
:
.navigationBarItems(trailing:
NavigationButton(destination: DetailVC()) {
Image(systemName: "plus")
.resizable()
.frame(width: 20, height: 20)
}
)
Apple Docs:
https://developer.apple.com/documentation/swiftui/navigationbutton(已弃用)
编辑:
NavigationButton
已过时,因此不应再使用。
相反,应该有一个NavigationLink
视图。这个结构是新的,我还不能测试它,但是按钮本身的代码应该像这样:
NavigationLink(destination: DetailVC()) { }
由于这是全新的,并且尚未在我们的Mac上的SwiftUI中使用,因此会出现以下错误:
使用未解决的标识符“ NavigationLink”;你是说'NavigationView'吗?
Apple Docs:
https://developer.apple.com/documentation/swiftui/navigationlink
答案 1 :(得分:0)
我制作了示例以显示列表和详细信息。希望这个示例应用程序能为您提供帮助。
https://github.com/Shiju86/ListViewSwiftUI
是的,NavigationButton不再存在,而是为我们提供了NaviagtionLink。
答案 2 :(得分:0)
NavigationLink应该是怎么做的。但是,在iOS 13.2和13.3中,当在标题中使用时,它似乎已损坏/不可靠(并完全损坏了my app:我通过将NavigationLink移出标题并将其他内容设为模态来解决了这一问题)
在标准Views本身中,它工作得更好(但仍然有些古怪)。荒谬的是,您可能要考虑使用模式而不是子视图,因为这似乎确实可行。