热门标签 | HotTags
当前位置:  开发笔记 > 前端 > 正文

如何在SwiftUINavigiationView中删除默认导航栏空间

如何解决《如何在SwiftUINavigiationView中删除默认导航栏空间》经验,为你挑选了1个好方法。

我是SwiftUI的新手(就像大多数人一样),试图弄清楚如何删除我在NavigationView中嵌入的List上方的空白。

在此图像中,您可以看到列表上方有一些空白

我要完成的是

我试过使用

.navigationBarHidden(true)

但这并没有进行任何明显的更改。

我目前正在这样设置我的navigationView

 NavigationView {
                FileBrowserView(jsonFromCall: URLRetrieve(URLtoFetch: applicationDelegate.apiURL))
                    .navigationBarHidden(true)
                }

其中FileBrowserView是具有列表和像这样定义的单元格的视图

List {
   Section(header: Text("Root")){
    FileCell(name: "Test", fileType: "JPG",fileDesc: "Test number 1")

                    FileCell(name: "Test 2", fileType: "txt",fileDesc: "Test number 2")
                    FileCell(name: "test3", fileType: "fasta", fileDesc: "")
}
}

我确实要注意,这里的最终目标是您将能够单击这些单元格来更深地浏览到文件树,因此在更深层的导航上应该在栏上显示“后退”按钮,但是我不需要在我的初始视图中排名最高。



1> graycampbell..:

由于某些原因,SwiftUI要求您还设置.navigationBarTitle.navigationBarHidden可以正常工作。

NavigationView {
    FileBrowserView(jsonFromCall: URLRetrieve(URLtoFetch: applicationDelegate.apiURL))
        .navigationBarTitle("")
        .navigationBarHidden(true)
}

更新资料

正如@Peacemoon在注释中指出的那样,无论您是否在后续视图中进行设置navigationBarHidden,当您在导航堆栈中进行更深入的浏览时,导航栏将保持隐藏false。就像我在评论中说的那样,这可能是由于Apple实施不佳或仅是糟糕的文档(谁知道,也许有一种“正确”的方式来实现)的结果。

无论如何,我想出了一种解决方法,似乎可以产生原始海报的预期效果。我很犹豫地推荐它,因为它看上去似乎不必要,但如果没有任何隐藏和取消隐藏导航栏的简单方法,这就是我能做的最好的事情。

本示例使用三个视图- View1具有隐藏的导航栏,View2并且View3两个视图均带有可见的带有标题的导航栏。

struct View1: View {
    @State var isNavigationBarHidden: Bool = true

    var body: some View {
        NavigationView {
            ZStack {
                Color.red
                NavigationLink("View 2", destination: View2(isNavigationBarHidden: self.$isNavigationBarHidden))
            }
            .navigationBarTitle("Hidden Title")
            .navigationBarHidden(self.isNavigationBarHidden)
            .onAppear {
                self.isNavigatiOnBarHidden= true
            }
        }
    }
}

struct View2: View {
    @Binding var isNavigationBarHidden: Bool

    var body: some View {
        ZStack {
            Color.green
            NavigationLink("View 3", destination: View3())
        }
        .navigationBarTitle("Visible Title 1")
        .onAppear {
            self.isNavigatiOnBarHidden= false
        }
    }
}

struct View3: View {
    var body: some View {
        Color.blue
            .navigationBarTitle("Visible Title 2")
    }
}

设置navigationBarHiddenfalse导航堆栈上的更深层次的看法似乎并不恰当覆盖最初设置视图的偏好navigationBarHiddentrue,所以唯一的解决方法我能想出是使用绑定改变原来的观点的偏好时,一个新的视图被推到导航堆栈上。

就像我说的那样,这是一个棘手的解决方案,但是如果没有Apple的官方解决方案,这就是我能想到的最好的解决方案。


这解决了我的问题!这是很奇怪的,您必须具有标题才能隐藏导航栏。
该错误仍然存​​在于beta之外:/
推荐阅读
author-avatar
cgy梦回秦都
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有