barButtonItem 中 UIKit "pushViewController" 的 SwiftUI 的替代方案是什么

What is the alternative for SwiftUI of UIKit's "pushViewController" in a barButtonItem

我正在 SwiftUI 中开发一个非常简单的应用程序,我已经设法为我的列表创建了一个 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)
                    }
)

使用此代码时,问题是它不会显示带有 "Back" 按钮的 DetailVC,但它会从底部显示,无法返回到我的 ContentView

放置在导航栏中以正确导航的正确项目是什么?

谢谢你,妮可

在 SwiftUI 中,您使用 NavigationButton 来导航您的应用程序。

只需将您的 PresentationButton 替换为 NavigationButton:

.navigationBarItems(trailing:
    NavigationButton(destination: DetailVC()) {
        Image(systemName: "plus")
            .resizable()
            .frame(width: 20, height: 20)
    }
)

Apple 文档:

https://developer.apple.com/documentation/swiftui/navigationbutton (已弃用)

编辑:


NavigationButton 已弃用,因此不应再使用。

取而代之的是 NavigationLink 视图,它应该可以工作。这个结构是新的,我还不能测试它,但是按钮本身的代码应该是这样的:

NavigationLink(destination: DetailVC()) { }

Apple 文档:

https://developer.apple.com/documentation/swiftui/navigationlink

我制作了示例来显示列表和详细信息。希望这个示例应用程序对您有所帮助。

https://github.com/Shiju86/ListViewSwiftUI

没错,NavigationButton 已不复存在,这个苹果为我们提供了 NaviagtionLink。

NavigationLink这个应该怎么做。然而,在 iOS 13.2 和 13.3 中,当在 header 中使用时,这似乎是 broken/unreliable(并且完全破坏了 my app:我通过将 NavigationLink 移出header 并使其他东西成为模态)。

它在标准视图本身内工作得更好(但仍然有怪癖)。可笑的是,您可能想考虑使用模式而不是 child 视图,因为这似乎确实有效。