以
NavigationView
为 UIHostingController
的根,以下代码显示 iPad 的分割视图。
struct ContentView: View {
var body: some View {
NavigationView {
Text("Hello")
.navigationBarTitle("Home")
}
}
}
使用上面的代码,它在 iPad 上显示分割视图。我如何仍然使用
NavigationView
并摆脱 iPad 的分割视图,因为我希望有一个列表,并且点击它应该推送另一个视图?
显式使用堆栈导航视图样式(默认情况下它与平台相关)
NavigationView {
Text("Hello")
.navigationBarTitle("Home")
}
.navigationViewStyle(StackNavigationViewStyle())
这对我不起作用,在使用 iOS 14.2 的 iPad 上使用任何其他 NavigationStyle 也不起作用。根视图总是这样的。
var body: some View {
NavigationView {
VStack {
List {
ForEach(self.ideas) { Idea in
IdeaListRow(idea: Idea)
}
.onDelete { (indexSet) in
let ideaToDelete = self.ideas[indexSet.first!]
self.managedObjectContext.delete(ideaToDelete)
do {
try self.managedObjectContext.save()
} catch {
print(error)
}
}
}
.navigationViewStyle(DoubleColumnNavigationViewStyle())
.navigationBarTitle(Text("Idea List"))
.listStyle(GroupedListStyle())
.navigationBarItems(leading:
NavigationLink(destination: AddView()) {
Text("Add")
} , trailing: EditButton())
}
}
}
自从
NavigationView
已被弃用并且正如Apple建议的那样:
请使用
代替。有关更多信息,请参阅迁移到新的导航类型。NavigationStack
struct ContentView: View {
var body: some View {
NavigationStack { // 👈 here
Text("Hello")
.navigationBarTitle("Home")
}
}
}
在
.navigationViewStyle(.stack)
上使用
NavigationView
修饰符
struct ContentView: View {
var body: some View {
NavigationView {
Text("Hello")
.navigationBarTitle("Home")
}
.navigationViewStyle(.stack) // 👈 here
}
}