簡體   English   中英

SwiftUI 中的模態表可以有導航欄嗎?

[英]Can a Modal Sheet have a Navigation Bar in SwiftUI?

我在我的代碼中從導航欄按鈕顯示一個模式表:

struct MainPage : View {

    @State var isModalSheetShown: Bool = false

    var body: some View {
        VStack {
            [...]
        }
        .navigationBarItems(trailing: HStack {
            Button(action: { self.isModalSheetShown = true }) {
                Text("Add")
            }
        })
        .sheet(isPresented: $isModalSheetShown, content: {
            VStack {
                [...]
            }
            .navigationBarItems(trailing: HStack {
                Button(action: { ... }) {
                    Text("Done")
                })
            })
        })
    }
}

但是導航欄沒有出現在模態表中,如下所示。

在此處輸入圖片說明

我做錯了什么,你如何在模態表上放置導航欄?

您必須像這樣將模態視圖包裝在NaviagtionView

@State var isModalSheetShown: Bool = false

var body: some View {
    VStack {
        Text("Main")
    }
    .navigationBarItems(trailing: Button("Add",
                                         action: { self.isModalSheetShown = true }))
    .sheet(isPresented: $isModalSheetShown) {
        NavigationView {
            VStack {
                Text("Modal")
            }
            .navigationBarItems(trailing: Button("Done",
                                                 action: {}))
        }
    }
}

模態視圖必須包含在NavigationView但上述使用.navigationBarItems(trailing: Button("Done", action: {}))解決方案對我不起作用。 對我有用的是,在模態視圖中,我必須添加一個 navigationButton 並顯示導航欄,我必須使用.navigationBarTitle("", displayMode: .inline) 所以這是我的 ModalView 代碼的一部分:

  var body: some View {
        VStack (alignment: .leading, spacing: 10) {
            header
            infoBody
            Spacer()
        }
        .padding()
        .navigationBarItems(leading: btnBack)
        .navigationBarTitle("", displayMode: .inline)
    }

暫無
暫無

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

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