簡體   English   中英

SwiftUI navigationBarBackButtonHidden 沒有按預期工作

[英]SwiftUI navigationBarBackButtonHidden not working as expected

我遇到了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")
        }
    }
}

這是一個預覽: 在此處輸入圖片說明

這是我希望隱藏“默認”后退按鈕的視圖的代碼:

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)
        }
    }
}

但是,當單擊第一個屏幕截圖中的列表項時,我得到的是: 在此處輸入圖片說明

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

我設法通過將 List 的代碼更新為以下內容來隱藏它:

NavigationLink(destination: ChatView(chat: chat).navigationBarBackButtonHidden(true)) {
    ChatRow(chat: chat)
}

然而,頂部和下一個視圖的標題之間仍然存在巨大差距:

在此處輸入圖片說明

一個導航堆棧上應該只有一個NavigationView ,所以

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

刪除標記的導航視圖,應該可以工作。

使用 Xcode 11.2、iOS 13.2 測試

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM