ios - SwiftUI navigationBarBackButtonHidden 没有按预期工作

标签 ios swift swiftui ios13 navigationview

我在使用 navigationBarBackButtonHidden 修饰符时遇到问题。它不会隐藏导航后退按钮...

这是列表的源代码:

import SwiftUI

struct ContentView: View {
    @State var showSheet = false

    var body: some View {
        NavigationView {
            List(chatsData, id: \.self.id) { chat in
                NavigationLink(destination: ChatView(chat: chat)) {
                    ChatRow(chat: chat)
                }
            }
            .navigationBarTitle("Chats")
        }
    }
}

这是一个预览: enter image description here

这是我希望隐藏“默认”后退按钮的 View 的代码:

import SwiftUI

struct ChatView: View {
    var chat: Chat
    @Environment(\.presentationMode) var presentationMode: Binding<PresentationMode>
    @State var name: String = "Some text"

    fileprivate var backButton: some View {
        Button(action: {
            self.presentationMode.wrappedValue.dismiss()
        }, label: {
            Image(systemName: "chevron.left")
        })
    }

    var body: some View {
        NavigationView {
            VStack(alignment: .leading, spacing: 0) {
                Spacer()

                TextField("Name's placeholder", text: $name)
                    .clipShape(Rectangle())
                    .overlay(Rectangle().stroke(Color("lightgray"), lineWidth: 2))
                    .lineLimit(5)
            }
            .navigationBarBackButtonHidden(true)
            .navigationBarItems(leading: backButton)
            .navigationBarTitle("\(chat.id)", displayMode: .inline)
        }
    }
}

但是,当单击第一个屏幕截图中的列表项时,这是我得到的: enter image description here

“<聊天”后退按钮仍然存在。

我设法通过将列表的代码更新为:

来隐藏它
NavigationLink(destination: ChatView(chat: chat).navigationBarBackButtonHidden(true)) {
    ChatRow(chat: chat)
}

然而,顶部和下一个 View 的标题之间仍然存在巨大差距:

enter image description here

最佳答案

一个导航栈上应该只有一个NavigationView,所以

struct ChatView: View {
    ...
    var body: some View {
        NavigationView { // << NavigationView not needed here !!!

删除标记的导航 View ,应该可以工作。

使用 Xcode 11.2、iOS 13.2 测试

关于ios - SwiftUI navigationBarBackButtonHidden 没有按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59419181/

相关文章:

ios - 何时释放为 UICollectionViewCell 光栅化分配的内存?

ios - 应用内设置或设置 bundle

ios - 代码错误 : failed to emit precompiled header file not found

swift - 如何从默认日历中删除所有事件

ios - .overlay 和 body 是什么 swift 概念

iOS:在 UIViewRepresentable 和 View 之间进行函数调用,SwiftUI

ios - 如何解决 Sqlite.swift 中的警告消息 'BUG IN CLIENT OF libsqlite3.dylib: database integrity compromised by API violation'?

ios - 自定义键盘显示在 iOS 11 中的错误位置

ios - 使用自动单元格高度配置 TableView 会导致不显示任何单元格

swift - TVVLCKit 实现 SwiftUI