【问题标题】:SwiftUI: Putting multiple BindableObjects into EnvironmentSwiftUI:将多个 BindableObjects 放入环境
【发布时间】:2019-11-04 01:37:20
【问题描述】:

SwiftUI 中,可以使用View 对象的environmentObject 方法将单个BindableObject 放入环境中。

如果我想同时将多个BindableObjects 放入环境中怎么办?我在 SwiftUI 文档中没有看到任何解决方案。我不想在构造函数中传递对象。

【问题讨论】:

    标签: ios swift dependency-injection swiftui


    【解决方案1】:

    environmentObject() 的调用返回一个(修改后的)视图,因此您可以链接调用以将多个对象放入环境中。示例:

     let rootView = ContentView()
         .environmentObject(firstBindable)
         .environmentObject(secondBindable)
    

    【讨论】:

    • 对象是如何引用的?是否有支持文档以了解更多信息?
    • @MichaelOzeryansky:我不知道它是如何实现的。我观看了有关 SwiftUI 的 WWDC 视频,并通过尝试和错误找出了其余部分。
    • 基于编译器错误,它似乎在寻找匹配相同类型的对象。并且当有多个相同类型时它也使用第一个environmentObject
    • 可能使用类型名作为key。当有多个相同类型的视图时,这是一个有效的用例。例如,计算两个相机曝光之间的光值差异(对于摄影师来说很常见,我是从经验中说的)。 scantips.com/lights/exposurecalc.html
    • 我希望我可以点击向上箭头 50 次!这简直要了我的命。谢谢!
    猜你喜欢
    • 2019-11-15
    • 2018-04-23
    • 1970-01-01
    • 1970-01-01
    • 2023-02-15
    • 1970-01-01
    • 1970-01-01
    • 2018-07-23
    • 2015-06-22
    相关资源
    最近更新 更多