详解SwiftUI数据流是怎么在View间传递的

本文详细介绍了SwiftUI中数据流如何在View间传递,涉及State Properties @State、State Binding、使用Combine框架的Publisher以及环境变量Environment Objects。通过实例展示了如何绑定数据和UI,以及在不同场景下选择合适的数据传递方式。
摘要由CSDN通过智能技术生成

作为一个声明式的UI框架,SwiftUI帮我们处理了几乎所有关于UI和数据之间的交互,这使我们不再需要关注数据变化时刷新UI和用户交互以后更新数据的逻辑。

为了实现数据和UI的绑定,我们需要利用Swift的一些关属性包装器来向SwiftUI描述它们之间的关系,那么让我们开始吧。

到公众号【iOS开发栈】学习更多SwiftUI、iOS开发相关内容。

 

State Properties @State

在前面的一篇文章中当我们给数组添加或者删除元素时,列表会自动响应变化,正是因为使用了@State来标记View中的model。

struct ContentView: View {
    @State private var title: String = ""
    var body: some View {
        VStack {
            Text("\(title)")
            TextField("Please Enter Title", text: $title)
        }
    }
}

使用@State包装的变量是可以被SwiftUI读取的值,这些值通常是一些字符串或数字等常量值。

当被State包装的属性改变时,SwiftUI会重新计算和绘制使用到该属性的视图所在的整个视图层级,通常是说变量所在View的Body会被重新绘制,在本例子中就是指ContentView的body。

@State包装的变量一定要用private修饰,并且这个变量只能在当前vi

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值