Swift 导航栏:";隐藏“;标题,但保留它以供后续的“后退”按钮使用
在我的应用程序中,我有两个SwiftUI视图,我们称它们为View1和View2。View1作为UIHostingController启动,并具有“转到View2”按钮,该按钮可在所述UIHostingController的导航控制器上按下View2(无SwiftUI导航链接等)。Swift 导航栏:";隐藏“;标题,但保留它以供后续的“后退”按钮使用,swift,swiftui,uinavigationcontroller,Swift,Swiftui,Uinavigationcontroller,在我的应用程序中,我有两个SwiftUI视图,我们称它们为View1和View2。View1作为UIHostingController启动,并具有“转到View2”按钮,该按钮可在所述UIHostingController的导航控制器上按下View2(无SwiftUI导航链接等)。 View1必须显示导航栏,因为它在工具栏中有一个自定义的“退出”按钮。VIEW2应该显示“您可能需要考虑一个隐藏的导航链接,这样就可以得到您正在寻找的推送行为。这将给您留下以下视图; struct View1: Vi
View1必须显示导航栏,因为它在工具栏中有一个自定义的“退出”按钮。VIEW2应该显示“您可能需要考虑一个隐藏的导航链接,这样就可以得到您正在寻找的推送行为。这将给您留下以下视图;
struct View1: View {
@State private var isActive = false
var body: some View {
NavigationView {
VStack {
Button("Present") {
isActive = true
}
NavigationLink(destination: View2(), isActive: $isActive) {
EmptyView()
}.hidden()
}.toolbar(content: {
Button("Exit") {
print("Exit view")
}
})
}
}
}
您的第一个视图将使用按钮通过推送动画显示视图2。为您提供所需的后退按钮行为。您的第一个视图在右上角的工具栏中没有标题和退出按钮。不幸的是,包括工具栏按钮在内的整个导航逻辑都是通过UIHostingController和是必须保留的。不允许在swift UI中使用导航链接,因为这会弄乱现有的导航控制器,这可能会导致奇怪的问题。好的,所以您基本上希望从swiftUI中操作UIKit navigationbar。但我不确定这种方法是否正确。您将不得不进行大量自定义工作要保留默认的iOS行为。我会将退出按钮及其逻辑添加到您的SwiftUI视图中。然后,您可以将
view1
显示为UIHostedViewController
,并在SwiftUI中保留默认的导航栏行为。如果不可能,您能否为我提供一个复制该问题的小示例?
struct View2: View {
var body: some View {
NavigationView {
Text("View 2")
}
}
}