MST
星途 面试题库

面试题:Swift中SwiftUI如何实现简单的数据绑定

假设你有一个`@State`修饰的布尔变量`isButtonTapped`,用于控制一个按钮是否被点击,并且希望根据这个变量来显示或隐藏一个文本视图。请用SwiftUI代码实现这个功能,并解释数据绑定的原理。
30.7万 热度难度
编程语言Swift

知识考点

AI 面试

面试题答案

一键面试
import SwiftUI

struct ContentView: View {
    @State private var isButtonTapped = false
    
    var body: some View {
        VStack {
            Button("点击我") {
                isButtonTapped.toggle()
            }
            if isButtonTapped {
                Text("按钮已被点击")
            }
        }
    }
}

数据绑定原理解释

  1. @State的作用:在SwiftUI中,@State是一个属性包装器。当一个变量被@State修饰时,SwiftUI会为该变量创建一个独立的存储,并跟踪其变化。每次isButtonTapped的值发生改变时,SwiftUI会自动重新计算并更新与之相关的视图部分。
  2. 视图更新:在body视图中,if isButtonTapped条件判断语句依赖于isButtonTapped的值。当按钮被点击,isButtonTapped通过toggle()方法改变值,SwiftUI检测到这个变化后,会重新构建body视图,从而决定是否显示Text("按钮已被点击")。这种机制实现了数据(isButtonTapped)和视图(Text是否显示)之间的自动绑定。