在操作表 swiftui 中使用 Navigationlink

using Navigationlink in actionsheet swiftui

有谁知道如何从 Swiftui 中的操作表转到另一个视图?

目前我将其用作操作表中的按钮:

.actionSheet(isPresented: $actionsheet) {
    ActionSheet(title: Text("Actions"), message: Text("Choose action"), buttons: [
        .default(
            NavigationLink(destination: adddetails()) {
                Text("Add details")
            }
        ),
        .default(Text("New")),
        .default(Text("Delete")),
        .cancel()
    ])                              
}

但它不会生成。即使 Xcode 没有给我错误。有人知道我能做什么吗?

您可以通过绑定使用 isActive 参数以编程方式控制 NavigationLink。然后,在您的 ActionSheet 中,您可以切换该绑定。

另一个关键是 NavigationLink 需要嵌入到您的原始视图层次结构中,而不是 ActionSheet。您可以使用 if 语句有条件地显示它,以便它仅在活动时显示(因此不可见,除非按下导航按钮):

struct ContentView: View {
    @State private var actionSheetOpen = false
    @State private var navigationLinkActive = false
    
    var body: some View {
        NavigationView {
            if navigationLinkActive {
                NavigationLink("", destination: Text("Detail"), isActive: $navigationLinkActive)
            }
            
            Button("Open action sheet") {
                actionSheetOpen.toggle()
            }
            .actionSheet(isPresented: $actionSheetOpen) {
                ActionSheet(title: Text("Actions"), message: Text("Choose action"), buttons: [
                    .default(Text("Navigation"), action: {
                        navigationLinkActive = true
                    }),
                    .default(Text("New")),
                    .default(Text("Delete")),
                    .cancel()
                ])
            }
            
        }.navigationViewStyle(StackNavigationViewStyle())
    }
}