如何访问另一个结构体中的变量?斯维夫图伊

I K*_*aya 6 swiftui

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

示例代码可以更好地演示:

struct level1: View {

@State var score1 = 5 

}

struct level2: View {

@State var score2 = 7 

}
Run Code Online (Sandbox Code Playgroud)

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

struct finalScore: View {

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

}
Run Code Online (Sandbox Code Playgroud)

Asp*_*eri 5

以不同的方式重新思考它......如下所示,单源信任,模型分离 - 视图分离,模型更改 - 视图反应,这就是 SwiftUI 的方式。

喜欢

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)")
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 我收到多个“调用中参数‘vm’缺少参数”错误。有办法解决吗? (2认同)