NavigationView SwiftUI 在 iPad 中显示分割视图

问题描述 投票:0回答:3

NavigationView
UIHostingController
的根,以下代码显示 iPad 的分割视图。

struct ContentView: View {
    var body: some View {
        
        NavigationView {
            Text("Hello")
                .navigationBarTitle("Home")
        }
    }
}

使用上面的代码,它在 iPad 上显示分割视图。我如何仍然使用

NavigationView
并摆脱 iPad 的分割视图,因为我希望有一个列表,并且点击它应该推送另一个视图?

swift swiftui navigationview
3个回答
24
投票

显式使用堆栈导航视图样式(默认情况下它与平台相关)

NavigationView {
   Text("Hello")
       .navigationBarTitle("Home")
}
.navigationViewStyle(StackNavigationViewStyle())

1
投票

这对我不起作用,在使用 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())
        }
    }
}


0
投票

✅ iOS 16

自从

NavigationView
已被弃用并且正如Apple建议的那样:

请使用

NavigationStack
代替。有关更多信息,请参阅迁移到新的导航类型

struct ContentView: View {
    var body: some View {
        
        NavigationStack { // 👈 here
            Text("Hello")
                .navigationBarTitle("Home")
        }
    }
}

🔄iOS 13

.navigationViewStyle(.stack)
 上使用 
NavigationView

修饰符
struct ContentView: View {
    var body: some View {
        
        NavigationView {
            Text("Hello")
                .navigationBarTitle("Home")
        }
        .navigationViewStyle(.stack) // 👈 here
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.