在barButtonItem

时间:2019-06-27 13:13:15

标签: swift button navigation navigationbar swiftui

我正在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

要正确导航到导航栏中的正确项目是什么?

谢谢你,尼科

3 个答案:

答案 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本身中,它工作得更好(但仍然有些古怪)。荒谬的是,您可能要考虑使用模式而不是子视图,因为这似乎确实可行。