试图创建一个类似于苹果日历应用程序中的“创建事件”模式的模式。我已经成功地在父NavigationView中使用以下代码显示了我的模式:
.navigationBarItems(trailing:
Button(action: {
self.isModal = true
}) {
Image(systemName: "plus").sheet(isPresented: $isModal, content: {
EventCreate(showModal: self.$isModal)
})
}
)该模式显示成功,但我无法在该模型中显示一个NavigationBar,如下所示:
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
发布于 2019-11-07 21:43:02
您需要将navigationBarTitle和navigationBarItems修饰符放在NavigationView中,而不是放在NavigationView之外。这些修饰符必须放在您正在嵌入的视图上,在您的示例中是Form。
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显示正确的位置。
https://stackoverflow.com/questions/58756719
复制相似问题