问题描述
我想在 SwiftUI 中使用新的 App 协议 @main 设置 EnvironmentObject --> NO Scene 或 AppDelegate。我可以在我的内容视图中设置 EnvironmentsObjects,而不是我的 @main .swift 吗?如果是?为什么我不能在我的 NavigationLink 中传入环境对象(如您所见)并且 Swift 要我手动将数据放入,我想传递给 LoadingPage()。
非常感谢!
import SwiftUI
struct ContentView: View {
//MARK: Properties
var body: some View {
let user = UserData()
//MARK: BODY
TextPage().environmentObject(user)
在 TextPage() 上,我想在 NavLink 中调用 LoadingPage()
import SwiftUI
import Combine
struct TextPage: View {
//MARK: Properties
@EnvironmentObject var user : UserData
@Observedobject var post = Anfrage()
@State var checkData = false // checkInput Var
var body: some View {
//MARK: Body
NavigationView{
vstack (alignment: .center,spacing: 30) {
//NAV LINK
NavigationLink(
destination: LoadingPage().environmentObject(user),isActive: $checkData) { EmptyView() }
```
And this is what Swift suggests me to correct:
LoadingPage(user: <#Environment<UserData>#>).environmentObject(user)
解决方法
在您的 StateObject
中使用 ContentView
,然后将其作为 EnvironmentObject
传递
@StateObject var user : UserData = UserData()
顺便说一句,如果您在 init
中使用 body
变量,每当任何带有包装器的属性重新加载正文时,它们都会重新初始化。