Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/apache-kafka/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
NavigationLink视图参数SwiftUI_Swiftui_Swiftui Navigationlink - Fatal编程技术网

NavigationLink视图参数SwiftUI

NavigationLink视图参数SwiftUI,swiftui,swiftui-navigationlink,Swiftui,Swiftui Navigationlink,当我在视图中调用NavigationImageView时,我希望在每次调用中发送不同的视图,以便可以导航不同的视图。但问题是如何在NavigationLink中发送视图参数。我尝试了View和UIView,但它给了我错误 struct NavigationImageView: View { var item : Store var destinationView: View var body: some View {

当我在视图中调用NavigationImageView时,我希望在每次调用中发送不同的视图,以便可以导航不同的视图。但问题是如何在NavigationLink中发送视图参数。我尝试了View和UIView,但它给了我错误

struct NavigationImageView: View {
    
    var item : Store
    var destinationView: View
    
    var body: some View {
        
        NavigationLink(destination:destinationView ) {
            
            Image(uiImage: (item.banner?.url)!.load())
                .resizable()
                .aspectRatio(CGFloat((item.banner?.ratio)!), contentMode: .fit)
                .cornerRadius(12)
                .shadow(radius: 4)
                .frame(width: CGFloat(UIScreen.main.bounds.width * 0.9), height: CGFloat((UIScreen.main.bounds.width / CGFloat((item.banner?.ratio) ?? 1))))
            
        }
    }
}

您需要在此处使用泛型,因为目标视图的类型事先未知:

struct NavigationImageView<DestinationType: View>: View {
    
    var item : Store
    var destinationView: DestinationType

    // ... other code
}
struct NavigationImageView:视图{
变量项:存储
var destinationView:DestinationType
//…其他代码
}

看看下面的示例

您的属性必须是
anyview
,然后您可以将任何视图指定给它,并将其用作目的地

import SwiftUI

struct ContentView: View {
    
    @State var showViewTwo : Bool = false
    
    //computed property of type some View which returns different views depending on a condition
    var destination : some View { 
        if showViewTwo {
            return Text("Hello Second View")
        }
        else
        {
            return Text("Hello First View")
        }
    }
    
    var body: some View {
        
        NavigationView {
           NavigationLink("Press me", destination: destination)
        }
        
        Button(action: {
            showViewTwo.toggle()
        }) {
            Text("Toggle View")
        }
        
    }
}