swiftUI自定义Environment的Key

1、创建一个结构体作为要共享的值

struct RefreshData {

    var thresold: CGFloat = 0

    var progress: Double = 0

    var refreshState: RefreshState = .invalid

}

2、把他作为 Environment 的一个键 (EnvironmentKey),这样用到这个 key 就可以获取它的默认值。

struct HeaderRefreshDataKey :EnvironmentKey {

    static var defaultValue: RefreshData = .init()

}

3、如果要改变或者修饰这个值,我们要扩写 EnvironmentValues,实现set,get方法

extension EnvironmentValues {

    var headerRefreshData: RefreshData {

        get {self[HeaderRefreshDataKey.self]}

        set{

            self[HeaderRefreshDataKey.self] = newValue

        }

    }

}

4、就这样,headerRefreshData 变成了 Environment 的 key,我们可以通过声明 @Environment(\.headerRefreshData) var headerRefreshData:RefreshData 来获取它的值,通过在 View 中 .environment(\.headerRefreshData, Setting(name: "...")) 来修改它。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值