在操作表 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())
}
}
有谁知道如何从 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())
}
}