首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SwiftUI - NavigationBar没有在Modal NavigationView中显示

SwiftUI - NavigationBar没有在Modal NavigationView中显示
EN

Stack Overflow用户
提问于 2019-11-07 20:50:23
回答 1查看 2.8K关注 0票数 6

试图创建一个类似于苹果日历应用程序中的“创建事件”模式的模式。我已经成功地在父NavigationView中使用以下代码显示了我的模式:

代码语言:javascript
复制
.navigationBarItems(trailing:
                    Button(action: {
                        self.isModal = true
                        }) {
                        Image(systemName: "plus").sheet(isPresented: $isModal, content: {
                            EventCreate(showModal: self.$isModal)
                        })
                    }
            )

该模式显示成功,但我无法在该模型中显示一个NavigationBar,如下所示:

代码语言:javascript
复制
struct EventCreate: View {

    @Binding var showModal: Bool

    @State var event = Event(id: 0, title: "", description: "", location: "", start: Date(), end: Date(), cancelled: false, public_occurrence: false, created: "", last_updated: "", guests: -1)

    var body: some View {
        NavigationView {
            Form{
                Section {
                    TextField("Title", text: $event.title)
                    TextField("Location", text: $event.location)
                }
                Section {
                    DatePicker(selection: $event.start, label: { Text("Start") })
                    DatePicker(selection: $event.end, label: { Text("End") })
                }
            }
        }
        .navigationBarTitle(Text("Create Event"), displayMode: .inline)
        .navigationBarItems(leading:
            Button("Close") {
                self.showModal = false
        })

    }
}

应用程序构建,表单显示,但NavigationView没有:

我怎么才能演这个节目?或者我应该使用另一个视图而不是NavigationView

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-11-07 21:43:02

您需要将navigationBarTitlenavigationBarItems修饰符放在NavigationView中,而不是放在NavigationView之外。这些修饰符必须放在您正在嵌入的视图上,在您的示例中是Form

代码语言:javascript
复制
struct EventCreate: View {

    @Binding var showModal: Bool

    @State var event = Event(id: 0, title: "", description: "", location: "", start: Date(), end: Date(), cancelled: false, public_occurrence: false, created: "", last_updated: "", guests: -1)

    var body: some View {
        NavigationView {
            Form{
                Section {
                    TextField("Title", text: $event.title)
                    TextField("Location", text: $event.location)
                }
                Section {
                    DatePicker(selection: $event.start, label: { Text("Start") })
                    DatePicker(selection: $event.end, label: { Text("End") })
                }
            }
            .navigationBarTitle(Text("Create Event"), displayMode: .inline)
            .navigationBarItems(leading:
            Button("Close") {
                self.showModal = false
            })
       }
    }
}

这个文章由HackingWithSwift显示正确的位置。

票数 10
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58756719

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档