SwiftUI State,Binding 状态管理

代码#

//
//  ContentView.swift
//  SwiftUIState
//
//  Created by CHEN Hao on 2024/5/8.
//

import SwiftUI

struct ContentView: View {
    @State private var isPlaying = false
    @State private var clickNumber1 = 0
    @State private var clickNumber2 = 0
    @State private var clickNumber3 = 0

    var body: some View {
        Text("\(clickNumber1+clickNumber2+clickNumber3)") // "\(variables)",文本差插值
            .font(.system(size: 100, weight: .bold, design: .rounded))

        HStack {
            CounterButton(counter: $clickNumber1, color: .red) // $variables 传值, 可以理解成父传子
            CounterButton(counter: $clickNumber2, color: .orange)
            CounterButton(counter: $clickNumber3, color: .green)
        }
    }
}

struct CounterButton: View {
    @Binding var counter: Int // 接受值
    var color: Color

    var body: some View {
        Button {
            counter += 1
        } label: {
            Circle().frame(width: 50, height: 50)
                .foregroundStyle(color)
                .overlay {
                    Text("\(counter)")
                        .font(.system(size: 20, weight: .bold, design: .rounded))
                        .foregroundStyle(.white)
                }
        }
    }
}

#Preview {
    ContentView()
}

效果#

作者:Hovey

出处:https://www.cnblogs.com/thankcat/p/18180992

版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。

posted @   ThankCAT  阅读(27)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
more_horiz
keyboard_arrow_up dark_mode palette
选择主题
menu
点击右上角即可分享
微信分享提示