类型“()”无法符合 SwiftUI NavigationStack 中的“View”

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

我是 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

希望大家能帮助我。谢谢。

swift xcode swiftui
1个回答
0
投票

要在

body
范围内,您必须返回视图。您尝试的其他函数 do 返回视图,因此不会导致问题。但是,您可以将
randomizeDestination
视为仅产生 void,这是无法显示的。考虑一下可以返回并显示什么,这可能更有意义。

© www.soinside.com 2019 - 2023. All rights reserved.