蘇哲聖*_*蘇哲聖 5 swiftui swiftui-navigationlink
在iOS15中,它不起作用:
import SwiftUI
struct ContentView: View {
var body: some View {
NavigationView {
NavigationLink {
Dest1().navigationTitle("Dest1")
} label: {
Text("to Destination 1")
}
}
}
}
struct Dest1: View {
@State var dest2Active: Bool = false
var body: some View {
NavigationLink(
destination: Button {
dest2Active = false // not working!!
} label: {Text("dismiss")} .navigationTitle("Dest2"),
isActive: $dest2Active
) {Text("to Destination 2")}
}
}
Run Code Online (Sandbox Code Playgroud)
dismiss
里面的按钮不起作用Dest2
!我记得在iOS14中,这段代码运行得很好。如何解决这个问题?
添加.isDetailLink(false)
到顶层NavigationLink
似乎可以解决问题。请注意,这适用于 iPhone iOS - 对于 iPad,您将需要使用 StackNavigationStyle,如 @workingdog 在其答案中建议的那样。
文档并不清楚为什么它起作用(事实上,它特指多列导航),但它似乎解决了许多相关问题。例如,请参阅:https ://developer.apple.com/forums/thread/667460NavigationLink
struct ContentView: View {
var body: some View {
NavigationView {
NavigationLink {
Dest1()
.navigationTitle("Dest1")
} label: {
Text("to Destination 1")
}.isDetailLink(false)
}
}
}
struct Dest1: View {
@State var dest2Active: Bool = false
var body: some View {
NavigationLink(isActive: $dest2Active) {
Dest2(dest2Active: $dest2Active)
} label: {
Text("to Destination 2")
}
}
}
struct Dest2: View {
@Binding var dest2Active : Bool
var body: some View {
Button {
dest2Active = false
} label: {
Text("Dismiss")
}.navigationTitle("Dest2")
}
}
Run Code Online (Sandbox Code Playgroud)
您需要添加.navigationViewStyle(.stack)
才能使其正常工作。这是适合我的测试代码。
import SwiftUI
@main
struct TestApp: App {
var body: some Scene {
WindowGroup {
ContentView()
}
}
}
struct ContentView: View {
var body: some View {
NavigationView {
NavigationLink {
Dest1().navigationTitle("Dest1")
} label: {
Text("to Destination 1")
}
}.navigationViewStyle(.stack) // <-- here the important bit
}
}
struct Dest1: View {
@State var dest2Active: Bool = false
var body: some View {
NavigationLink(
destination: Button {
dest2Active = false // now working!!
} label: {Text("dismiss")} .navigationTitle("Dest2"),
isActive: $dest2Active
) {Text("to Destination 2")}
}
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
4367 次 |
最近记录: |