Swiftui Switfui如何从NavigationLink设置环境对象
我想在视图2中显示我在视图1中选择的元素。我编写了这个简单的代码,但它不起作用,因为我不知道如何在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
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
}
}
}