问题标签 [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.
swiftui - SwiftUI 获取某些视图的 EnvironmentValues,仅给出对视图的引用
根据我的理解,如果你自己定义一个视图(作为一个实现的结构View
),那么你可以将一些 var 声明为环境变量,如下所示:
这将使您可以访问该EnvironmentValues.isEnabled
字段。
但是,这似乎只能在视图定义本身内实现。
给定一些视图v
,是否有可能获取该视图的环境对象?或获得特定的环境值?
swiftui - SwiftUI 项目中的“使用未解析的标识符”
我正在创建我的第一个 SwiftUI 项目。一切都很顺利,直到我向项目中添加了一个新类(一个 XML 解析器)。现在,当我尝试调用新类时,出现错误“使用未解析的标识符”。编译器似乎不知道新类。
下面的代码被大大简化了。希望我已经提供了足够的信息来传达这个想法:
解析器类...
binding - SwiftUI 在多个类之间传递数据
在搜索了 Apple 的 SwiftUI 文档、web 和 stackoverflow 之后,我似乎无法弄清楚如何使用多个类并在它们之间传递 EnviromentObject 数据。所有关于 SwiftUI 的 EnvironmentObject、ObservableObjects、Bindings 的文章都展示了如何将数据从模型传递到视图,但是从一个模型传递到另一个模型呢?或者我是否完全以错误的方式思考这个问题。
如何将 @Published 变量从 A 类传递到 B 类?
在这个简单的 SwiftUI 示例应用程序中,我尝试将 @Published 数据从 Settings 类传递到 NetworkManager 类。此应用程序有一个 ContentView,其中包含用户名和密码的两个表单字段,以及一个按钮,按下该按钮将联系 API 并显示结果。
下面的代码会崩溃,因为 NetworkManager mockService 函数不知道“设置”是什么。我可以在视图中读取“设置”观察到的 EnvironmentObject,但是如何在另一个类中获取该数据?我猜这里与绑定有关,但不确定该怎么做。
场景委托:
内容视图.swift
swift - SwiftUI“环境相关”颜色
在 Apple 的文档中,Color
被定义为:“一种环境相关的颜色”。(强调我的)
https://developer.apple.com/documentation/swiftui/color
因此,说 SwiftUI 颜色不是恒定的,而是颜色的颜色(原文如此)取决于其环境是否正确。
这种环境依赖的一个例子是什么?
swiftui - .environmentObject() 视图运算符与@EnvironmentObject 的目的是什么?
我正试图从这里众所周知的新手深渊中爬出来。
我开始掌握 @EnvironmentObject 的使用,直到我注意到文档中的 .environmentObject() 视图运算符。
这是我的代码:
我试图用视图上的 .environmentObject() 运算符替换 @EnvironmentObject 的使用。
我因缺少“设置”定义而出现编译错误。
但是,如果没有 .environmentObject 运算符,代码可以正常运行。
所以我的问题是,为什么有 .environmentObject 运算符?
.environmentObject() 是否实例化 environmentObject 而 @environmentObject 访问实例化对象?
swiftui - 我可以在 SwiftUI 中对所有共享数据使用 @EnvironmentObject 吗?
有@State
,@ObservedObject
和@EnvironmentObject
绑定在SwfitUI
视图和其他对象之间共享数据。每个都有其指定的用途,但@EnvironmentObject
似乎是最强大和最容易使用的。那么,我可以将它用于所有状态变量和共享数据吗?这有什么缺点吗?
swiftui - 有什么方法可以在 Struct 和 Class 之间共享全局变量?@Environment 不起作用
设想:
我有一个基于选项卡的应用程序,它具有类似功能的并行网络例程。
每个都有自己的网络错误处理程序,它发送一个@Published 警报标志来通知调用主机的警报操作员显示相应的警报。
在这种情况下,我有一个“无互联网”警报。
问题:
只有一 (1) 个网络错误例程是可以的......但是拥有多个网络例程会产生多个网络错误,这些错误是:
- 需要多个 .alert 运算符(每个选项卡式网络例程一个)或
- 对所有人使用 SINGLE .alert 运算符。
选项 #1 不好,因为所有 .alerts 都会在同一主机上相互冲突。
剩下的选项#2。
这将要求我有一个在并行警报生成器之间共享的 GLOBAL 警报标志。
这些警报源自并行的“可观察类”,每个类都包含它们的网络处理逻辑(发布者),主机可以通过@Observed变量 从中获取各自的警报消息。
但是,每个并行类都不能访问@environment以共享一个全局属性,该属性将在主机结构上的一个 .alert() 属性中共享。
那是我的问题。
注意:这只是一个学习应用程序来模拟不同的网络场景;以及如何主观地处理各自的数据。...我可以通过仅检查网络 ONCE 与每个选项卡式例程来简化这一点。
问题:如何让各种类共享由类与结构生成 的全局变量(布尔标志和字符串消息)?
我需要一个类单例吗?如何将其合并到接收结构中?
我有两个世界:需要共享全局数据的类和支柱。
swift - SwiftUI 前置条件失败:属性未能设置初始值
我在 SwiftUI 中有两个页面,可以使用 tabView 进行切换,一个是 ProjectPage,另一个是 HabitPage。在 ProjectPage 中,可以显示项目列表。在 HabitPage 中,可以显示习惯列表。也可以在此页面中添加新习惯。所有的项目和习惯都将存储在核心数据中。项目与任务有关系,任务与项目有关系。在我建立一个新习惯并切换到项目页面后,程序会崩溃。
输出
我的代码的一部分:
}
习惯页面:
}
内容视图
}
谁能告诉我为什么?我已经尝试了很长时间
swift - SwiftUI 绑定另一个对象的变量不起作用
我希望我的视图模型有状态绑定不在主视图中。
在下面的代码中,我在主视图中将视图模型的 @GestureState 变量绑定到 DragGesture。但问题是,没有任何编译错误,它根本不会更新我的 @GestureState 变量。如果我在主视图中定义 @GestureState 变量,它就可以工作。任何想法?
swift - SwiftUI:基于@Published 变量的排序列表
我正在使用 SwiftUI 构建 UI,并且我有一个用于构建List
元素的数组。现在我想根据@Published
来自@EnvironmentObject
.
方法一
我尝试让数组已经排序,将环境对象传递给排序方法:
这将编译,但如果更改列表将不会更新environmentObject
。我也尝试过,environmentObject.variableToBaseSortOn
但无济于事。
方法二
我尝试在 Swift UI 中对数组进行内联排序:
这将编译,但崩溃:
崩溃中的提示不正确,environmentObject
已设置并self.environmentObject
设置为正确的对象。