我已使用SwiftUI和导航视图创建了一个主从应用程序,只是导航栏未正确显示在详细信息视图上。在iPhone X和更高版本的设备上,它不会填充屏幕的顶部(时间和状态图标所在的位置)。我使用主从模板在Xcode中创建了一个新项目,该应用程序呈现得很好。我已经将我的应用程序与模板进行了比较,老实说我找不到任何不合适的东西,因此欢迎提出任何建议!
这是我的应用的屏幕截图。请注意,导航栏未填充屏幕顶部:
这是模板应用程序的屏幕截图,其中显示了应为的栏:
以下是主视图的代码:
struct ListView: View {
@State var showNewAssignmentModal = false
@Environment(\.managedObjectContext) var context
@FetchRequest(entity: Assignment.entity(), sortDescriptors: [NSSortDescriptor(keyPath: \Assignment.dueDate, ascending: true), NSSortDescriptor(keyPath: \Assignment.name, ascending: true)]) var assignments: FetchedResults<Assignment>
var body: some View {
NavigationView {
List(assignments, id: \.self) { assignment in
AssignmentRow(assignment: assignment).environment(\.managedObjectContext, self.context)
}
.navigationBarTitle(Text("Lists"))
.navigationBarItems(
leading: EditButton(),
trailing: Button(
action: {
self.showNewAssignmentModal = true
}
) {
Image(systemName: "plus").imageScale(.large)
} .sheet(isPresented: $showNewAssignmentModal) {
NewAssignmentView().environment(\.managedObjectContext, self.context)
}
)
}
}
}
这是详细视图的代码:
struct AssignmentDetailView: View {
@Binding var assignment: Assignment
@Environment(\.managedObjectContext) var context
var body: some View {
Text("Hello")
.padding()
.navigationBarTitle(Text(""), displayMode: .inline)
}
}
答案 0 :(得分:0)
您应该可以将此修饰符添加到NavigationView中
.edgesIgnoringSafeArea(.top)
将只忽略顶部。您还可以根据需要的应用设置.bottom
或.all
。希望这行得通!