如何访问另一个结构中的变量? SWIFTUI [英] How to access to a variable in another struct? SWIFTUI

查看:408
本文介绍了如何访问另一个结构中的变量? SWIFTUI的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想访问其他结构中的变量以得到总数。

I would like to access to variables in other structs to have a total count.

示例代码会更好地演示:

Example code would demonstrate better:

struct level1: View {

@State var score1 = 5 

}

struct level2: View {

@State var score2 = 7 

}

在另一个结构中,我希望能够使用score1和score2变量。下面的代码不起作用,但是我需要这样的东西。

In another struct, I would like to be able use score1 and score2 variables. The below code doesn't work, but I need something like this.

struct finalScore: View {

@State var totalScore = level1.score1 + level2.score2 

}


推荐答案

以某种不同的方式进行思考...如下所示,单源信任,模型分离-视图分离,模型更改-视图反应,这就是SwiftUI的做法。

Rethink it in some different way... like below, single-source trust, model separated - view separated, model changed - view react, this is the way SwiftUI goes.

import SwiftUI
import Combine

class ScoreModel: ObservableObject {
    @Published var score1 = 5
    @Published var score2 = 7
}

struct MainView: View {
    @ObservedObject var vm: ScoreModel = ScoreModel()

    var body: some View {
        VStack {
            level1(vm: vm)
            level2(vm: vm)
            Divider()
            finalScore(vm: vm)
        }
    }
}
struct level1: View {
    @ObservedObject var vm: ScoreModel

    var body: some View {
        Text("\(vm.score1)")
    }
}

struct level2: View {
    @ObservedObject var vm: ScoreModel

    var body: some View {
        Text("\(vm.score2)")
    }
}

struct finalScore: View {
    @ObservedObject var vm: ScoreModel

    var body: some View {
        Text("\(vm.score1 + vm.score2)")
    }
}

这篇关于如何访问另一个结构中的变量? SWIFTUI的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆