gpt4 book ai didi

SwiftUI 如何在保留后退按钮的同时隐藏导航栏

转载 作者:行者123 更新时间:2023-12-04 16:39:59 25 4
gpt4 key购买 nike

所以我试图在 SwiftUI 的详细信息 View 中隐藏导航栏。我在技术上通过在不同 View 中使用 init() 使其工作,但问题是它使导航栏对整个应用程序透明,我只希望在一个 View 中使用它。我没有在 DetailsView 中使用 init() 的原因是因为我有一个需要输入的变量,所以我不知道该怎么做!这是初始化程序的代码:

init() {
let navBarAppearance = UINavigationBar.appearance()
navBarAppearance.backgroundColor = .clear
navBarAppearance.barTintColor = .clear
navBarAppearance.tintColor = .black
navBarAppearance.setBackgroundImage(UIImage(), for: .default)
navBarAppearance.shadowImage = UIImage()
}
下面是在 detailsView 中使用 init() 的 Content View 和 Details View 代码的样子:
//内容 View //
struct ContentView: View {
var body: some View {
NavigationView {
List {
ForEach(0..<5) { i in
NavigationLink(destination: DetailsView(test: 1)) {
Text("DetailsView \(i)")
}
}

}
.listStyle(InsetGroupedListStyle())
.navigationBarTitle("Test App")
}
}
}
//详情查看//
struct DetailsView: View {

var test: Int

var body: some View {
ScrollView {
Text("More Cool \(test)")
Text("Cool \(test)")
Text("Less Cool \(test)")
}
}

init(test: Int) {
self.test = 8
let navBarAppearance = UINavigationBar.appearance()
navBarAppearance.backgroundColor = .clear
navBarAppearance.barTintColor = .clear
navBarAppearance.tintColor = .black
navBarAppearance.setBackgroundImage(UIImage(), for: .default)
navBarAppearance.shadowImage = UIImage()
}
}

struct DetailsView_Previews: PreviewProvider {
static var previews: some View {
DetailsView(test: 8)
}
}
这是我的代码的大量编辑版本,但它显示了我遇到的问题。由于不需要传入任何变量,init() 只能在该 View 中删除栏。但是,使用该变量输入,它不仅会将所有 View 更改为数字的“8”,而且它甚至不会隐藏导航栏。我不确定我是否只是做错了什么,或者这是否是正确的方法,但任何帮助将不胜感激!
另外,顺便提一下,有人知道如何使用 NavigationView 在 iOS 14 中隐藏 statusBar 吗?

最佳答案

我认为您尝试使用 UIKit 逻辑而不是 SwiftUI 逻辑。这就是我将在 View 的顶部引导侧隐藏带有后退按钮的导航栏的方法。
至于隐藏状态栏,我会使用 .statusBar(hidden: true)。
但它似乎不适用于 iOS14。可能是BUG...可以引用Apple documentation关于这个话题。

struct DetailsView: View {

@Environment(\.presentationMode) var presentation

var test: Int

var body: some View {
ZStack(alignment: .topLeading) {

ScrollView {
Text("More Cool \(test)")
Text("Cool \(test)")
Text("Less Cool \(test)")
}

Button(action: { presentation.wrappedValue.dismiss() }) {
HStack {
Image(systemName: "chevron.left")
.foregroundColor(.blue)
.imageScale(.large)
Text("Back")
.font(.title3)
.foregroundColor(.blue)
}
}
.padding(.leading)
.padding(.top)
}
.navigationTitle(Text(""))
.navigationBarHidden(true)
.statusBar(hidden: true)
}
}

关于SwiftUI 如何在保留后退按钮的同时隐藏导航栏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62898605/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com