@AppStorage可以在SwiftUI中的Environment中使用吗?

2024-02-24

@AppStorage可以在SwiftUI的Environment中使用吗?如果可以,你会怎么做?

我知道您可以使用 @Bindings 将 @AppStorage 的值从一个视图发送到另一个视图,我想知道是否可以将其放入环境中。我没有关于何时适用的实际示例,但我想知道这是否可能。

这足够疯狂吗?我认为您只会存储该值,而不会存储在 UserDefault 中。

struct RootView: View {
    @AppStorage("userPreferredDisplayMode") private var userPreferredDisplayMode: String = "automatic"
    @Environment(\.userPreferredDisplayMode) private var envUserPreferredDisplayMode: String    
    
    var body: some View {
        Text(title)
            .environment(\.userPreferredDisplayMode, envUserPreferredDisplayMode)
    }
}

事实证明你可以。

struct CustomTextKey: EnvironmentKey {
    static var defaultValue: Binding<String> = Binding.constant("Default Text")
}

extension EnvironmentValues {
    var customText: Binding<String> {
        get { self[CustomTextKey.self] }
        set { self[CustomTextKey.self] = newValue }
    }
}

struct ContentView: View {
    @AppStorage("text") private var text: String = ""
    
    var body: some View {
        TextEditor(text: $text).padding()
        Divider()
        SecondView()
            .environment(\.customText, $text)
    }
}

struct SecondView: View {
    var body: some View {
        ThirdView()
    }
}
struct ThirdView: View {
    @Environment(\.customText) private var text: Binding<String>
    
    var body: some View {
        TextEditor(text: text).padding()
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

@AppStorage可以在SwiftUI中的Environment中使用吗? 的相关文章

  • NSFetchedResultsController XCode 7 问题

    Xcode 7 beta 6 和 NSFetchedResultsController 今天让我头疼 如果我使用 Xcode 6 编译相同的代码 使用 Swift 2 修复 程序可以在设备和模拟器 iOS 7 iOS8 上运行 但是 如果我
  • 未找到 Firebase 框架

    我一直在尝试将我的项目迁移到 cocoapods 我觉得我快到了 但我陷入了困境 ld 找不到架构 x86 64 的 Firebase 框架 错误 链接器命令失败 退出代码为 1 使用 v 查看调用 我正在尝试使用我的 app xcwork
  • SwiftUI 预览的 Xcode Canvas 不显示

    我正在尝试从 Xcode 11 运行新的 Canvas 功能 但 Canvas 不会显示 我究竟做错了什么 这个新的 Xcode 功能应该在不运行应用程序的情况下显示我的 SwiftUI 视图的实时预览 当您使用 SwiftUI 创建自定义
  • 如何从 UIView 中仅删除用户添加的子视图

    我试图删除添加到视图中的所有子视图 因此我实现了一个循环来使用以下内容迭代子视图 for subview in view subviews println subview subview removeFromSuperview 我通过向我的
  • SwiftUI 列表内存问题,图像未从 RAM 中释放导致崩溃

    我正在将图像加载到 SwiftUI 列表中 当向下滚动太多图像时 RAM 会飙升并导致应用程序崩溃 为什么当用户向下滚动经过图像时图像不会被释放 我正在加载图像 如下所示 List allProducts id self product i
  • 解析嵌套的 JSON Swift 3 [重复]

    这个问题在这里已经有答案了 我正在尝试在 Swift 3 中解析复杂的 JSON 文件 我在获取值时遇到问题 我找到了一些示例代码并尝试对其进行了一些调整 但它不起作用我当前收到错误 Type NSArray 没有下标成员 我什至不确定这是
  • 如何从 Swift NSURLSession 获取数据?

    例如 我有以下代码 let task NSURLSession sharedSession dataTaskWithURL url completionHandler data response error gt Void in var d
  • SwiftUI 列表未使用 ForEach 正确更新

    我正在尝试使用带有两个 ForEach 循环的列表创建收藏夹功能 当我单击按钮时 该项目会移动到正确的部分 但按钮图像和功能不会更新 我是否遗漏或做错了什么 如果我导航到另一个视图并返回 列表最初会正确呈现 但如果我单击按钮 仍然会表现出相
  • 快速循环中的并行异步执行

    我的快速代码如下所示 var jsFriendlyFreinds JSObject for friend in friends let jsFriend await FriendsPlugin createFriendResult frie
  • 在视图之间传递变量 SwiftUI

    再次基本问题 我想让变量 anytext 对于我要添加的所有未来视图都可见且可访问 在我的例子中 变量将是String 如果是的话 程序会改变吗 Float 我怎样才能将其另存为全局变量 如果我重新启动应用程序 变量会自行删除吗 如何保存即
  • 在运行时在 iOS 上添加框架

    首先 我将描述我的用例 说明为什么我需要在 iOS 上运行时添加框架 假设我在 iOS 设备上有一个应用程序 该应用程序需要一些第三方框架来添加一些外部功能 现在 功能有很多 所以 所需的框架数量也会很多 用户可能不需要很多功能 只是一小部
  • WKWebView CALayer 到图像导出空白图像

    我试图截取网页的屏幕截图 但图像始终为空白 白色 我正在使用此代码进行转换CALayer to Data 取自这里 https stackoverflow com a 41387514 4859791 extension CALayer G
  • 如何在 Firebase 的子级中检查子级中的数据

    标题可能看起来有问题 但我正在尝试弄清楚如何做到这一点 我的数据结构如下所示 我想看看每个频道中是否都有用户 这将检查是否有通道 channelRef observeSingleEvent of value with snapshot gt
  • Xcode 7.1 在归档 swift ios 应用程序时挂起

    Xcode 7 1 在归档应用程序时 挂在 复制 Swift 标准库 处 知道为什么吗 对于面临同样问题的其他人 在尝试了其他所有方法并失败后 通过重新启动 mac 来修复它 D
  • 使用 Swift 访问类单例时的 semaphore_wait_trap

    我遇到了一个奇怪的问题 我可以很好地访问我的类单例实例 但如果我尝试再次访问它 它似乎会挂起 这是代码的简单版本 private let SharedInstance MyManager class MyManager NSObject c
  • 通过iPhone音频插孔读取数据

    我正在寻找一种方法来读取通过 iPhone 的音频插孔从 Arduino 发送的原始数据 我搜索了很多并发现this https github com sanjibahmad Is Headphone Plugged In tree mas
  • XCode 7 上的 libswiftSecurity.dylib “没有这样的文件或目录 (2)”

    我正在尝试构建一个在 XCode 6 上运行正常的项目 但出现错误 Applications Xcode beta app Contents Developer Toolchains XcodeDefault xctoolchain usr
  • iOS 11 文件提供程序扩展中的项目

    我有一个带有文件提供程序扩展名的应用程序 我尝试使用此方法为 ios 11 的新文件应用程序提供支持link https developer apple com documentation fileprovider content and
  • UIAlertController 的警报无法关闭它

    我正在创建警报 但当用户按 确定 时无法将其关闭 我收到以下错误 2017 12 28 07 03 50 301947 0400 Prestamo 691 215874 API 错误 返回 0 宽度 假设 UIViewNoIntrinsic
  • 如何在类的参数中保留对另一个对象的引用

    我刚开始学习Apple Swift语言 无法理解 如何在类的参数中保留对另一个对象的引用 List my custom class class RecordsList NSObject var listObj List init inout

随机推荐

  • 我已将项目升级到 Razor 视图引擎,但 VS2010 仍然自动生成 WebForms

    我已经升级到 MVC3 和 Razor 一切正常 然而 在我的return View model 视图 是红色的 VS2010 将帮助我生成一个视图 当我这样做时 它会生成一个 aspx WebForms 视图 项目中没有其他 aspx 文
  • Matplotlib 无法在 Windows 10 上运行 - DLL 无法加载

    我已经在 Windows 10 机器上安装了 matplotlib pip3 install matplotlib 我收到一条消息 表明它正在使用轮子 matplotlib 3 4 1 cp39 cp39 win amd64 whl1 当我
  • MIDI 入门

    我想编写一个应用程序 从我的 MIDI 钢琴中读取 USB MIDI 数据 并且很可能从我能找到的任何其他 MIDI 数据中读取数据 正在寻找一个与 NET 一起使用的库 并且即使另一个应用程序正在使用 MIDI 也允许我 拦截 此数据 T
  • 事件计数的窗口聚合

    我对我的卡夫卡事件进行了分组 private static void createImportStream final StreamsBuilder builder final Collection
  • 是否可以从 AWS CLI 打开 AWS 管理控制台网站?

    假设我使用特定账户登录到我的 AWS CLI 工具 我可以执行如下命令 aws ecr describe repositories 是否有一个 AWS CLI 命令可以在默认浏览器上打开 AWS 管理控制台网站 并已登录到同一账户 例如 类
  • C 程序中的“原型”是什么?

    我用来学习 C 的书解释了一种叫做 原型 的东西 但我无法正确理解 在书中 以下示例代码解释了这些 原型 这在这里意味着什么 什么是 原型 two func c a program using two functions in one fi
  • AdMob:过滤儿童广告[关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我设法在我的 Android 和 iOS 应用程序上运行 AdMob sdk 并且它可以完美地显示广告
  • 在 Visual Studio Express 2010 中无法选择 Main Method 作为启动对象?

    我在我的一个课程中编写了一个 Main 方法 我的启动对象说Not set 单击它时 下拉菜单中不会显示任何其他内容 为什么我不能选择 main 方法作为我的启动对象 我只想通过按 ctrl F7 来运行我的主方法 但这样做时什么也没有发生
  • IIS、Asp.NET 管道和并发性

    我想知道 Web 应用程序中的并发实际上是如何工作的 我读过几篇文章 据我了解 HttpApplication 的多个实例将同时工作 现在 我创建了一个简单的 Web 应用程序来测试并发性 并将以下内容放入 global asax prot
  • 汇编器:为什么存在BCD?

    我知道如果您不了解二进制 BCD 是更直观的数据类型 但我不知道为什么要使用这种编码 它好像没有多大意义 因为它浪费 以 4 位表示 当表示大于 9 时 另外我认为 x86 只支持直接添加和替换 您可以通过 FPU 转换它们 这有可能来自旧
  • 尝试使用 object_getIvar 检索值时 EXC_BAD_ACCESS

    我正在尝试学习如何利用 Objective C 运行时函数 我有一本字典 其中包含几个name value pairs E g recipe description Delicious and healthy recipe id 70423
  • 下降顺序和级联

    我想使用 CASCADE 在一个语句中删除表中使用的序列和表本身 但我收到通知 并且表没有被删除 例如 CREATE SEQUENCE seq1 CREATE TABLE t1 f1 INT NOT NULL DEFAULT nextval
  • C中设定间隔生成随机数

    我确实了解Python 并且在设定的时间间隔内创建随机数非常简单 但在C 中似乎有点复杂 这是我通过查看有关堆栈溢出的其他问题得到的结果 int diceroll 1 diceroll 1 rand 3 1 printf d n dicer
  • Emacs 23 和 iPython

    有人在 emacs 23 上使用 iPython 吗 emacs wiki 上的文档有点混乱 我有兴趣听取任何使用 emacs 进行 Python 开发的人的意见 你使用下载的 python mode 和 ipython el 吗 你有什么
  • XmlpullparserException:需要一个带引号的字符串(java.io.Inputstreamreader 中的位置:DOCDECL @1:62)

    Code SoapObject request new SoapObject NAMESPACE SOAP METHOD GETDATATBL request addProperty TName ttnm request addProper
  • jgit 如何获取两个日期之间发生的所有提交

    或者只是两个日期之间发生的所有提交 在 SVN 中 你可以做类似的事情svn diff r date date 去做吧 你可以举这个例子JGit测试类RevWalkFilterTest java https github com eclip
  • 从方法外部取消 GetAsync 请求

    我有大量的异步请求 在某些时候 当应用程序停用 暂停 时 我需要取消所有请求 我正在寻找一种解决方案来取消异步方法之外的请求 有人能指出我正确的方向吗 这是代码块 异步方法 public async void GetDetailsAsync
  • 更改数组中的索引顺序

    现在已经被困在这个问题上有一段时间了 所以任何帮助将不胜感激 我有一个包含元素列表的数组 左 目标是使用左数组中的值对另一个数组 右 键进行排序 左边的数组 Array 0 gt ID 1 gt FirstName 2 gt LastNam
  • 如何在Google Drive Filestream中创建node.js项目

    我正在尝试在 Google Drive Stream windows10 上创建一个 vue 项目 但我不能 cd G MyDrive webdata sample app vue init simulatedgreg electron v
  • @AppStorage可以在SwiftUI中的Environment中使用吗?

    AppStorage可以在SwiftUI的Environment中使用吗 如果可以 你会怎么做 我知道您可以使用 Bindings 将 AppStorage 的值从一个视图发送到另一个视图 我想知道是否可以将其放入环境中 我没有关于何时适用