【问题标题】:navigationBarHidden() Not working in iOS 15 Beta SwiftUInavigationBarHidden() 在 iOS 15 Beta SwiftUI 中不起作用
【发布时间】:2021-10-27 16:42:37
【问题描述】:

我正在尝试隐藏第三个选项卡上的导航栏,但对于其余选项卡,它应该会显示出来。它在 iOS 14 中运行良好,但在 iOS 15 中,修饰符随机运行。一旦我开始在选项卡之间切换,导航栏也开始显示在第三个选项卡上。下面是我的 SwiftUI 文件代码

注意:这只是我的应用程序的更复杂代码设置的简单表示。 Xcode:12.5.1 设备:XR(iOS 15 beta)

import SwiftUI

struct TestView: View {
    
    @State var selectedTab: TabType = .home
    
    var body: some View {
        NavigationView {
            TabView(selection: $selectedTab) {
                ForEach(TabType.allCases, id: \.self) { tabType in
                    switch tabType {
                    case .profile:
                        ThirdView()
                            .navigationBarHidden(true)
                            .tag(tabType)
                            .tabItem {
                                Label(tabType.title, systemImage: "plus")
                            }
                    default:
                        SecondView()
                            .tag(tabType)
                            .tabItem {
                                Label(tabType.title, systemImage: "star")
                            }
                    }
                }
            }
        }
    }
}

struct SecondView: View {
    
    var body: some View {
        VStack {
            Spacer()
            Text("2nd view")
            NavigationLink("3rd view", destination: ThirdView())
            Spacer()
        }
        .background(Color.green)
    }
}

struct ThirdView: View {
    
    var body: some View {
        ZStack {
            Color.red
            Text("3rd view")
        }
    }
}

enum TabType: CaseIterable {
    
    case home
    case discover
    case profile
    case more
    
    var image: Image {
        switch self {
        case .home:
            return Image(systemName: "plus")
        case .discover:
            return Image(systemName: "plus")
        case .profile:
            return Image(systemName: "plus")
        case .more:
            return Image(systemName: "plus")
        }
    }
    
    var title: LocalizedStringKey {
        switch self {
        case .home:
            return LocalizedStringKey("home")
        case .discover:
            return LocalizedStringKey("Discover")
        case .profile:
            return LocalizedStringKey("Me")
        case .more:
            return LocalizedStringKey("Shop")
        }
    }
}

【问题讨论】:

  • navigationBarHidden 总是有点小故障。也许将其附加到您的TabView,然后添加@State var shouldHide = false 并将其传递给:.navigationBarHidden(shouldHide)
  • @aheze 感谢这对我的情况有用,至少现在是这样。让我们看看 iOS 15 有哪些新惊喜

标签: swift swiftui ios15


【解决方案1】:

将您的.navigationBarHidden(true) 移动到您的ThirdView's ZStack,如下所示:

struct ThirdView: View {
    
    var body: some View {
        ZStack {
            Color.red
            Text("3rd view")
        }.navigationBarHidden(true)
    }
}

如果你这样做,你会失去你的后退按钮......

确保先将其从 TabView 中移除。

Lmk 如果它有效!

【讨论】:

  • 我已经尝试将 .navigationBarHidden 放置在视图层次结构的不同位置,但不起作用
猜你喜欢
  • 1970-01-01
  • 2021-11-17
  • 1970-01-01
  • 2021-10-05
  • 1970-01-01
  • 1970-01-01
  • 2021-08-29
  • 2021-12-05
  • 2022-07-22
相关资源
最近更新 更多