Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/23.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
Swiftui Switfui如何从NavigationLink设置环境对象_Swiftui_Swiftui Navigationlink - Fatal编程技术网

Swiftui Switfui如何从NavigationLink设置环境对象

Swiftui Switfui如何从NavigationLink设置环境对象,swiftui,swiftui-navigationlink,Swiftui,Swiftui Navigationlink,我想在视图2中显示我在视图1中选择的元素。我编写了这个简单的代码,但它不起作用,因为我不知道如何在NavigationLink中设置dataStore。有人能修改代码使其正常工作吗 import SwiftUI class DataStore: ObservableObject { @Published var itemNumber = 0 } struct ContentView: View { @EnvironmentObject var dataStore:DataS

我想在视图2中显示我在视图1中选择的元素。我编写了这个简单的代码,但它不起作用,因为我不知道如何在
NavigationLink
中设置
dataStore
。有人能修改代码使其正常工作吗

import SwiftUI

class DataStore: ObservableObject {
    @Published var itemNumber = 0
}

struct ContentView: View {

    @EnvironmentObject var dataStore:DataStore

    var body: some View {
        TabView {
            // First View Tab
            NavigationView {
                List(0..<5) { item in
                    NavigationLink(destination: DetailView().environmentObject(self.dataStore)) {
                        Text("Item: \(item)")
                    }
                }
            }
            .tabItem {
                Text("View 1")
            }            
            // Second View Tab
            Text("This is the item selected in View Tab 1: \(dataStore.itemNumber)")
                .tabItem {
                    Text("View 2")
            }
        }
    }
}

struct DetailView:View {
    @EnvironmentObject var dataStore:DataStore
    var body: some View {
        Text("Item: \(dataStore.itemNumber)")
    }
}

如果您需要依赖项,那么就找到在哪里进行依赖项注入

以下是可能的方法。使用Xcode 11.4/iOS 13.4进行测试

struct ContentView: View {

    @EnvironmentObject var dataStore:DataStore

    var body: some View {
        TabView {
            // First View Tab
            NavigationView {
                List(0..<5) { item in
                    NavigationLink(destination: DetailView(item: item)) {
                        Text("Item: \(item)")
                    }
                }
            }
            .tabItem {
                Text("View 1")
            }
            // Second View Tab
            Text("This is the item selected in View Tab 1: \(dataStore.itemNumber)")
                .tabItem {
                    Text("View 2")
            }
        }
    }
}

struct DetailView:View {
    let item: Int
    @EnvironmentObject var dataStore:DataStore
    var body: some View {
        Text("Item: \(dataStore.itemNumber)")
        .onAppear {
            self.dataStore.itemNumber = self.item
        }
    }
}
struct ContentView:View{
@EnvironmentObject变量数据存储:数据存储
var body:一些观点{
TabView{
//第一视图选项卡
导航视图{

列表(0..我也使用了您相同的方法,但我想了解是否还有其他方法。谢谢。
struct ContentView: View {

    @EnvironmentObject var dataStore:DataStore

    var body: some View {
        TabView {
            // First View Tab
            NavigationView {
                List(0..<5) { item in
                    NavigationLink(destination: DetailView(item: item)) {
                        Text("Item: \(item)")
                    }
                }
            }
            .tabItem {
                Text("View 1")
            }
            // Second View Tab
            Text("This is the item selected in View Tab 1: \(dataStore.itemNumber)")
                .tabItem {
                    Text("View 2")
            }
        }
    }
}

struct DetailView:View {
    let item: Int
    @EnvironmentObject var dataStore:DataStore
    var body: some View {
        Text("Item: \(dataStore.itemNumber)")
        .onAppear {
            self.dataStore.itemNumber = self.item
        }
    }
}