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 视图,因为这似乎确实有效。
我正在 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 视图,因为这似乎确实有效。