我是 Swift 新手,并且遇到了 xcode 15 中的导航问题。 当我调用该函数时:
randomizeDestination()
出现错误“Type '()'无法符合'View'”。
当我用不同的函数替换它时:
func getScreen2() -> some View {}
内容几乎相同,只是它具有返回值而不是“currentDestination”,错误消失并出现另一个屏幕。然而,switch case 只执行一次。
如果我用这个:
NavigationLink(destination: currentDestination, isActive: $readyToNavigate,
label: {
程序按预期工作,但出现不推荐使用的警告。
我的代码如下:
struct ContentView: View {
@State private var currentDestination: AnyView?
@State private var readyToNavigate : Bool = false
var body: some View {
NavigationView {
ZStack{
//Background Image
NavigationStack {
VStack {
Button {
readyToNavigate = true
} label: {
//Text("Navigate Button")
ZStack {
// some Button Icon code
} // end ZStack
// some Text attribute code
} // Label
} // VStack
.navigationTitle("Navigation")
.navigationDestination(isPresented: $readyToNavigate) {
randomizeDestination()
} // NavDes
} // NavStack
} // ZStack
} // NavView
} // Body
func randomizeDestination() {
let randomIndex = Int.random(in: 0...30)
print("RI: ", randomIndex)
switch randomIndex {
case 0...5:
currentDestination = AnyView(NextScreen1())
case 6...11:
currentDestination = AnyView(NextScreen2())
case 12...18:
currentDestination = AnyView(NextScreen3())
case 19...24:
currentDestination = AnyView(NextScreen4())
default:
currentDestination = AnyView(NextScreen5())
}
} // end func
} // end Struct
希望大家能帮助我。谢谢。
要在
body
范围内,您必须返回视图。您尝试的其他函数 do 返回视图,因此不会导致问题。但是,您可以将 randomizeDestination
视为仅产生 void,这是无法显示的。考虑一下可以返回并显示什么,这可能更有意义。