如何在 watchOS 6 中注入 .environment Object()

2023-12-01

我想在 watchOS 6 中创建 SwiftUI 视图时注入环境对象。

但由于 WKHostingController 需要具体类型,我无法执行以下操作ContentView().environmentObject(UserData())

class HostingController: WKHostingController<ContentView> {
    override var body: ContentView {
        return ContentView().environmentObject(UserData())
    }
}

此代码失败并出现以下错误:

无法将“some View”类型的返回表达式转换为“ContentView”返回类型

我见过这样的解决方法:在 watchOS 中使用environmentObject这看起来像是一个黑客而不是一个正确的解决方案。

我在 Twitter 上向 watchOS 工程师询问了同样的问题,他的答复是.environmentObject(UserData())体内ContentView()。我尝试这样做,但 Xcode 报告错误。

那么有人找到了同样的方法吗?


链接中的解决方法使用AnyView,这是一个非常糟糕的主意。 Apple 工程师在其他几个问题和推文中已经解释过,AnyView 只能在叶视图上使用,否则会对性能造成严重影响。

至于第二个选项(将environmentObject inside ContentView),效果很好。这里有一个例子:

class UserData: ObservableObject {
    @Published var show: Bool = true
}

struct ContentView: View {
    @State var model = UserData()

    var body: some View {
        SubView().environmentObject(model)
    }
}

struct SubView: View {
    @EnvironmentObject var model: UserData

    var body: some View {
        VStack {
            Text("Tap Me!").onTapGesture {
                self.model.show.toggle()
            }

            if self.model.show {
                Text("Hello World")
            }
        }
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 watchOS 6 中注入 .environment Object() 的相关文章

  • 如何更改 MGLPolyline 的颜色?

    如何更改 MGLPolyline 的颜色 我曾经看过here https stackoverflow com questions 32024464 customize mglpolyline using mapbox但答案不起作用 我还尝试
  • 更改iOS11中的UISearchBar背景图片

    我想更改我的 UISearchBar 背景图像 当将它添加为我的 UITableView 中的标题视图时 它工作得很好 但是 当我想更改它以将 SearchBar 设置为 navigationItem 的 searchController
  • Xcode - 调试视图层次结构

    我正在尝试调试应用程序的视图层次结构 Xcode 窗口的左侧窗格中出现了一个紫色的小方块 请参见屏幕截图 知道这个问题可能是什么吗 好吧 我找到了这个问题的根源 这是一个约束问题
  • iOS推送通知:当应用程序处于后台时,如何检测用户是否点击了通知?

    关于这个主题有很多 stackoverflow 线程 但我仍然没有找到好的解决方案 如果应用程序不在后台 我可以检查launchOptions UIApplicationLaunchOptionsRemoteNotificationKey
  • iOS:如何在不降低 fps 的情况下播放音频?

    我正在使用 Sprite Kit 最好使用 Swift 库 为 iOS 9 开发游戏 目前 我正在使用 Singleton 在其中预加载音频文件 每个文件都连接到一个单独的 AVAudioPlayer 实例 这是一个简短的代码片段来了解这个
  • 在视图控制器中获取 applicationDidFinishLaunching 调用。解析尚未初始化

    我正在尝试从 Parse 加载数据Initial View 控制器 问题是 Parse 在我的中初始化AppDelegate s didFinishLaunching所以我需要等到它被调用后再尝试从 Parse 加载数据 在我的视图控制器中
  • 将 C 转换为 Swift:向 UITextField 添加放大镜图标

    如何在左侧添加一个放大镜图标UITextField 我找到了类似问题的答案here https stackoverflow com questions 11811705 where can i get the magnifying glas
  • iOS 自定义滑块删除两端的最小和最大空间

    我正在尝试使用自定义滑块 class MySlider UISlider override func trackRect forBounds bounds CGRect gt CGRect let customBounds CGRect o
  • 使用 UItableviewCell 实现 Google 地图

    我正在尝试在 UItableviewCell 组件内实现谷歌地图 我这样做的方法是在原型单元中定义 GMSMapView 然后使用 dequeueReusableCell 方法配置地图单元 但是 我尝试应用的任何更改都会失败 例如添加标记
  • Swift 3:如何访问48字节CFData中matrix_float3x3的值?

    我正在尝试访问内在矩阵answer https stackoverflow com a 48159895 9296667 通过运行下面的命令 我能够得到一个 48 字节的任意对象 https developer apple com docu
  • Admob 广告无法快速显示

    您好 我正在尝试将 admob 广告添加到已使用 swift 上传到应用商店的应用程序中 我在 admob 中制作了一个应用程序并复制了 appid 和广告 id 并显示了各自的横幅广告和插页式广告 这里的问题是当我写这行时 request
  • 闭包存储属性初始化有什么好处?

    初始化类的属性时 此代码有什么区别以及优点 缺点 1 let menuBar MenuBar let mb MenuBar return mb and 2 let menuBar MenuBar 两个代码片段都声明并初始化存储的属性 htt
  • 核心数据:重命名属性,而不会导致用户及其当前数据出现问题

    我只想为我的应用程序的新版本重命名并在表上添加属性 并且如果应用程序已安装 我想保留数据 首先我只是设置选项 let options NSMigratePersistentStoresAutomaticallyOption true NSI
  • iOS - 如何在 swift 中使用 `NSMutableString`

    我已经看过这段 Objective C 代码 但我很难在 swift 中做同样的事情 NSMutableAttributedString res self richTextEditor attributedText mutableCopy
  • Swift SpriteKit edgeLoopF​​romRect 问题

    下面的代码可以识别底部和顶部边缘场景和球按预期弹开 但是 那左边缘和右边缘现场的情况一直被破坏 如果施加足够的力 球会离开屏幕 然后最终返回 就好像场景的边缘超出了 iPhone 模拟器窗口的边缘 import SpriteKit clas
  • ios swift parse:从 3 个类收集数据

    我有这样的结构 User CardSet 带有指向 User objectId 的指针 user 和 col name 带有点 cards 的卡片到 Card Set objectId 和列 name 我想选择所有卡数据 包括当前用户的卡集
  • 如何在 Swift 中从 UIColor 获取 RGB 代码(INT)[重复]

    这个问题在这里已经有答案了 我想在 Swift 中获取 UIColor 的 RGB 值 let swiftColor UIColor red 1 green 165 255 blue 0 alpha 1 println RGB Value
  • UItextView 背景颜色 Linespacing 区域太

    我正在尝试在 UITextView 中复制文本突出显示 不是搜索文本突出显示 但我也被行间距的颜色所困扰 我该如何纠正这个问题 现在的情况 期望的结果 我已将以下属性添加到我的 UiTextview 的属性文本中 对于段落行间距 我使用了以
  • SpriteKit的更新函数:时间与帧率

    一般来说 我对编程和 Spritekit 很陌生 并且有兴趣探索毫秒和帧率之间的关系 以及如何使用更新函数作为两者之间的中介 帧率与毫秒 从本质上讲 帧速率和时间之间的主要区别在于时间始终一致 而帧速率则不然 由于密集的图形程序 它可能会下
  • SwiftUI 全屏图像背景

    我想在背景中显示全屏图像 我已经实现了这个 struct LoginView View var body some View VStack Spacer Text Hallo Text Hallo2 Text Hallo2 Text Hal

随机推荐

  • jOOQ不生成源

    我试图将 jOOQ 包含到我的代码中 但是没有生成任何代码 执行时mvn clean generate sources 不生成任何源 我希望它创建一个Category类 其定义如下schema sql file CREATE TABLE I
  • Java 原始数据膨胀异常

    我试图在 java 中解码 JWT 有效负载 但该有效负载被压缩 放气 zip DEF java util zip DataFormatException 标头检查不正确 private static byte decompress byt
  • 空手道 - 如何从单个主要功能调用多个外部功能

    Feature Principal feature Background url http example com Scenario Feature calling def inputTable call read input table
  • LDAP 的连接字符串是什么?

    这是我需要如何使用它 string tmpDirectory String Format LDAP ou 0 dc 1 dc 2 parentOrganizationUnit domainName domainExtension 当我尝试使
  • 如何创建一个可以将按键发送到控件而不窃取焦点的按钮 - 虚拟键盘

    如何制作一个可以将键发送到 datagridview 的按钮 因此我需要以某种方式将 datagridview 返回到其失去焦点之前的状态 我来解释一下问题 我有一个带有 datagridview 和一些按钮的表单 我可以点击按钮 它会输入
  • 防止conda自动降级python包

    I had problems with pandas datareader软件包 v0 8 1 为了解决我的问题 我必须通过运行以下命令将软件包升级到较新的版本 0 9 conda install c anaconda pandas dat
  • 启用禁用表格行中的控件

    我想在选中相应的 chkView 时启用该行的编辑和删除复选框 如果未选中则禁用它们 这段代码一开始根本就没有触发 我哪里错了 http jsfiddle net 75rVH 1 HTML table tr td td tr table
  • 将 ifelse 函数应用于系统发育扇的颜色提示

    作为系统发育爱好者 我想通过应用 if 语句对提示 类似于本例中的 62 个物种 进行颜色编码 我目前正在使用以下代码 试图将与 O 相关的所有物种着色为深绿色 ColourIf ifelse LU O blue darkgreen tif
  • 检测另一个进程的位数(在 Windows 中)

    如何检测 Windows 中是否有另一个进程以 32 64 位运行 我知道如何为我自己的流程执行此操作 但不知道如何为不同的流程执行此操作 任何语言的提示或解决方案都可以 谢谢 查看是Wow64进程
  • 将列表运算符“in”与浮点值一起使用

    我有一个包含浮点数的列表 每个数字有 3 位小数 例如 474 259 如果我像这样验证列表中的号码 if 474 259 in list sample print something 然后显示消息 但如果我从另一个列表中取出数字并将其四舍
  • clojure 宏生成函数

    我正在尝试编写一个将生成 n 个函数的宏 这是我到目前为止所拥有的 only defined this because if I inline this into make placeholders it s unable to expan
  • 如何从 java 程序运行 mvn 命令?

    我正在构建一个 Java 程序 用于在服务器端自动执行一个过程 通常我 cd 到 Desktop GIT 并使用此 Maven 命令 mvn Integration test DskipTests P Interactive e 我正在构建
  • x86 masm 你好世界

    我正在尝试使用 VS 2010 附带的 ML 和 LINK 在 Windows 上编译一个 hello world MODEL FLAT STACK 4096 data msg db Hello World 0 code INCLUDELI
  • 有没有办法永久关闭 Composer 的 ANSI?

    当我在 shell 中运行 Composer 时 它会将所有文本呈现为深黄色背景色 因此几乎无法阅读 有一个选项可以提供 no ansi与我运行的每个命令争论 但这看起来确实很痛苦 有没有办法将其默认关闭 或者甚至将颜色更改为更易读的颜色
  • 如何在 D3 中的多个单独过渡多边形之间添加过渡延迟?

    原始代码可以在以下位置找到 http bl ocks org Guerino1 3a51eeb95d3a8345bc27370e8c9d5b77 我有许多多边形正在转换到 svg 画布上 从左到右 位于 HTML 页面的底部 我用来创建 V
  • SQL Server 行值作为列名数据透视表?

    我在 SQL Server 2008 中有以下视图 DEPT EMP ID EMP NAME P DATE HOURS WORKED 我希望视图是这样的 DEPT EMP ID EMP NAME 2012 09 28 2012 09 29
  • 为什么图像开头有不需要的额外字节?

    问题 我为我兄弟制作了一个主页 可以在这里访问 http www daniel steiger ch 它在 Linux 上使用 Microsoft ASP NET MVC3 和 mono 3 通过 fastcgi 和 nginx 加上我自己
  • 编写安全的 RMI 服务器-客户端应用程序

    我正在编写一个服务器客户端应用程序 其中通过互联网进行通信 我有几个关于安全性的问题和担忧 我做了一些研究 发现这里的一些帖子很有用 但我想要更多信息 我读到的一些相关问题是 通过 RMI 进行客户端的安全身份验证 java rmi 身份验
  • 选择直到 postgresql 中的行匹配?

    有没有办法选择行直到满足某些条件 IE 一种limit 但不限于N行 但直到第一个不匹配行为止的所有行 例如 假设我有一张桌子 CREATE TABLE t id SERIAL PRIMARY KEY rank INTEGER value
  • 如何在 watchOS 6 中注入 .environment Object()

    我想在 watchOS 6 中创建 SwiftUI 视图时注入环境对象 但由于 WKHostingController 需要具体类型 我无法执行以下操作ContentView environmentObject UserData class