问题标签 [swiftui-environment]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
578 浏览

swiftui - SwiftUI 获取某些视图的 EnvironmentValues,仅给出对视图的引用

根据我的理解,如果你自己定义一个视图(作为一个实现的结构View),那么你可以将一些 var 声明为环境变量,如下所示:

这将使您可以访问该EnvironmentValues.isEnabled字段。

但是,这似乎只能在视图定义本身内实现。

给定一些视图v,是否有可能获取该视图的环境对象?或获得特定的环境值?

0 投票
0 回答
394 浏览

swiftui - SwiftUI 项目中的“使用未解析的标识符”

我正在创建我的第一个 SwiftUI 项目。一切都很顺利,直到我向项目中添加了一个新类(一个 XML 解析器)。现在,当我尝试调用新类时,出现错误“使用未解析的标识符”。编译器似乎不知道新类。

下面的代码被大大简化了。希望我已经提供了足够的信息来传达这个想法:

解析器类...

0 投票
1 回答
2964 浏览

binding - SwiftUI 在多个类之间传递数据

在搜索了 Apple 的 SwiftUI 文档、web 和 stackoverflow 之后,我似乎无法弄清楚如何使用多个类并在它们之间传递 EnviromentObject 数据。所有关于 SwiftUI 的 EnvironmentObject、ObservableObjects、Bindings 的文章都展示了如何将数据从模型传递到视图,但是从一个模型传递到另一个模型呢?或者我是否完全以错误的方式思考这个问题。

如何将 @Published 变量从 A 类传递到 B 类?

在这个简单的 SwiftUI 示例应用程序中,我尝试将 @Published 数据从 Settings 类传递到 NetworkManager 类。此应用程序有一个 ContentView,其中包含用户名和密码的两个表单字段,以及一个按钮,按下该按钮将联系 API 并显示结果。

下面的代码会崩溃,因为 NetworkManager mockService 函数不知道“设置”是什么。我可以在视图中读取“设置”观察到的 EnvironmentObject,但是如何在另一个类中获取该数据?我猜这里与绑定有关,但不确定该怎么做。

场景委托:

内容视图.swift

0 投票
1 回答
101 浏览

swift - SwiftUI“环境相关”颜色

在 Apple 的文档中,Color被定义为:“一种环境相关的颜色”。(强调我的)

https://developer.apple.com/documentation/swiftui/color

因此,说 SwiftUI 颜色不是恒定的,而是颜色的颜色(原文如此)取决于其环境是否正确。

这种环境依赖的一个例子是什么?

0 投票
1 回答
163 浏览

swiftui - .environmentObject() 视图运算符与@EnvironmentObject 的目的是什么?

我正试图从这里众所周知的新手深渊中爬出来。

我开始掌握 @EnvironmentObject 的使用,直到我注意到文档中的 .environmentObject() 视图运算符。

这是我的代码:

我试图用视图上的 .environmentObject() 运算符替换 @EnvironmentObject 的使用。
我因缺少“设置”定义而出现编译错误。

但是,如果没有 .environmentObject 运算符,代码可以正常运行。

所以我的问题是,为什么有 .environmentObject 运算符?

.environmentObject() 是否实例化 environmentObject 而 @environmentObject 访问实例化对象?

0 投票
1 回答
428 浏览

swiftui - 我可以在 SwiftUI 中对所有共享数据使用 @EnvironmentObject 吗?

@State,@ObservedObject@EnvironmentObject绑定在SwfitUI视图和其他对象之间共享数据。每个都有其指定的用途,但@EnvironmentObject似乎是最强大和最容易使用的。那么,我可以将它用于所有状态变量和共享数据吗?这有什么缺点吗?

0 投票
0 回答
90 浏览

swiftui - 有什么方法可以在 Struct 和 Class 之间共享全局变量?@Environment 不起作用

设想:

我有一个基于选项卡的应用程序,它具有类似功能的并行网络例程

在此处输入图像描述

每个都有自己的网络错误处理程序,它发送一个@Published 警报标志来通知调用主机的警报操作员显示相应的警报。

在这种情况下,我有一个“无互联网”警报。

问题:

只有一 (1) 个网络错误例程是可以的......但是拥有多个网络例程会产生多个网络错误,这些错误是:

  1. 需要多个 .alert 运算符(每个选项卡式网络例程一个)或
  2. 对所有人使用 SINGLE .alert 运算符。

选项 #1 不好,因为所有 .alerts 都会在同一主机上相互冲突。
剩下的选项#2。

这将要求我有一个在并行警报生成器之间共享的 GLOBAL 警报标志。

这些警报源自并行的“可观察类”,每个类都包含它们的网络处理逻辑(发布者),主机可以通过@Observed变量 从中获取各自的警报消息。

但是,每个并行类都不能访问@environment以共享一个全局属性,该属性将在主机结构上的一个 .alert() 属性中共享。

那是我的问题。

注意:这只是一个学习应用程序来模拟不同的网络场景;以及如何主观地处理各自的数据。...我可以通过仅检查网络 ONCE 与每个选项卡式例程来简化这一点。

问题:如何让各种类共享由类与结构生成 的全局变量(布尔标志和字符串消息)?

我需要一个类单例吗?如何将其合并到接收结构中?

我有两个世界:需要共享全局数据的类和支柱。

0 投票
0 回答
1468 浏览

swift - SwiftUI 前置条件失败:属性未能设置初始值

我在 SwiftUI 中有两个页面,可以使用 tabView 进行切换,一个是 ProjectPage,另一个是 HabitPage。在 ProjectPage 中,可以显示项目列表。在 HabitPage 中,可以显示习惯列表。也可以在此页面中添加新习惯。所有的项目和习惯都将存储在核心数据中。项目与任务有关系,任务与项目有关系。在我建立一个新习惯并切换到项目页面后,程序会崩溃。

输出

我的代码的一部分:

}

习惯页面:

}

内容视图

}

谁能告诉我为什么?我已经尝试了很长时间

0 投票
0 回答
380 浏览

swift - SwiftUI 绑定另一个对象的变量不起作用

我希望我的视图模型有状态绑定不在主视图中。

在下面的代码中,我在主视图中将视图模型的 @GestureState 变量绑定到 DragGesture。但问题是,没有任何编译错误,它根本不会更新我的 @GestureState 变量。如果我在主视图中定义 @GestureState 变量,它就可以工作。任何想法?

0 投票
1 回答
3242 浏览

swift - SwiftUI:基于@Published 变量的排序列表

我正在使用 SwiftUI 构建 UI,并且我有一个用于构建List元素的数组。现在我想根据@Published来自@EnvironmentObject.

方法一

我尝试让数组已经排序,将环境对象传递给排序方法:

这将编译,但如果更改列表将不会更新environmentObject。我也尝试过,environmentObject.variableToBaseSortOn但无济于事。

方法二

我尝试在 Swift UI 中对数组进行内联排序:

这将编译,但崩溃:

崩溃中的提示不正确,environmentObject已设置并self.environmentObject设置为正确的对象。