Comments 2
Всем HI!
У кого-нибудь получилось решить?
Я кнопки и вью создал, но при нажатии любой кнопки, у меня кроме верхнего вью, синхронно меняются количество нажатие и всех остальных кнопок. Уже второй день голову ломаю.
0
import SwiftUI
struct ContentView: View {
@State private var totalCounter: Int = 0
var body: some View {
VStack {
Text("\(totalCounter)")
.padding()
.font(.system(size: 40))
.background(.green)
.clipShape(Ellipse())
ButtonView(color: .blue, totalCount: $totalCounter)
ButtonView(color: .black, totalCount: $totalCounter)
ButtonView(color: .yellow, totalCount: $totalCounter)
}
}
}
#Preview {
ContentView()
}
struct ButtonView: View {
var color: Color
@State var counter: Int = 0
@Binding var totalCount: Int
var body: some View {
Button {
counter += 1
totalCount += 1
} label: {
Text("\(counter)")
.padding()
.font(.system(size: 60))
.tint(.white)
.background(color)
.clipShape(Circle())
}
}
}
Как было сказано в статье @Stateиспользуется для локальной работы внутри представления, поэтому counter внутри ButtonView его и использует, а вот totalCount будет передаваться в другое представление его мы определяем как @Binding. В ContentView же мы определяем totalCount как @State, поскольку это значение используется в том же представлении.
Фактически, удивительным я нашел тот факт, что мы можем использовать то же имя переменной в разных представлениях и он будет хранить общее значение. Поправьте, если ошибся
0
Sign up to leave a comment.
SwiftUI уроки (часть 6)