@State 관련 질문입니다
//정상 작동 하지 않는 코드
import SwiftUI
struct MiniView: View {
@State var numb: Int
var body: some View {
Text("\(numb)")
.padding()
}
}
struct ContentView: View {
@State var number: Int = 0
var body: some View {
VStack {
Text("\(number)")
}
Button(action: {
number += 1
}, label: {
number%2 == 0 ? Text("짝") : Text("홀")
})
MiniView(numb: number)
}
}
#Preview {
ContentView()
}위의 코드는 작동하지 않습니다.
하지만 여기서
MiniView 아래 numb 변수의 @State 를 지워주면
정상 작동합니다. (아래코드)
이유가 뭘까요.. ㅜㅠ ??
//정상 작동 하는 코드
import SwiftUI
struct MiniView: View {
var numb: Int
var body: some View {
Text("\(numb)")
.padding()
}
}
struct ContentView: View {
@State var number: Int = 0
var body: some View {
VStack {
Text("\(number)")
}
Button(action: {
number += 1
}, label: {
number%2 == 0 ? Text("짝") : Text("홀")
})
MiniView(numb: number)
}
}
#Preview {
ContentView()
}
답변 3
1
아 어떤 상황인지 이해했습니다.
하위뷰의 변수와 상위뷰의 변수를 같이 변경하고 싶으면 하위 변수에 @State를 붙이면 안됩니다.
@State를 안 붙이면 하위의 전달받은 변수가 상위변수의 값과 연결되지만
만약에 @State를 붙이면 하위의 변수가 새로운 저장공간을 생성하기 때문에 연결이 끊어져버려서 그렇습니다.
또 의문이 있으시면 질문 주세요~! 강의 구매해주셔서 감사드립니다!
0
gatewaykim님 안녕하세요.
제 환경에서는 두 코드다 정상작동하는데요.

혹시 xcode를 한번 껐다 켜보시겠어요?
하위뷰에 @State가 있어도 사실 문제될게 없는거 같거든요.
Static 선언 시 에러 발생
0
32
1
클로저의 형태로 만들다
0
43
1
Function Types Error
0
34
1
안드로이드 기기 실행 오류
0
42
2
수강연장 가능할까요...
0
51
2
강의에서 사용된 안드로이드 스튜디오 버전을 알고싶어요.
0
56
2
SwiftData 미리보기 미적용
0
51
2
중괄호와 함수
0
56
2
기본 뷰 디자인이 강사님과 다릅니다.
0
51
2
이미지 2x, 3x 질문
0
40
2
강의를 다 듣고난 후
0
57
2
android crud중 c 영상이 12초만 있는 잘린 영상이에요.
0
64
2
수강 기간 연장 문의
0
63
1
수강연장부탁드려도될까요..
0
77
2
Combine Playground 에서 실행 시
0
91
2
70강 - 글로벌 액터로 격리된 Protocol 을 extension 에서 conform 시 타입 본체의 격리 수준 질문
0
73
1
searchable이 화면 하단에 위치해요
0
92
2
Drawing Cycle 관련 질문
0
92
1
앱 제작 시 주로 코드로 작성하시는 이유가 있을까요?
0
121
2
델리게이트 패턴 관련 질문
0
93
2
예제 코드가 안나와요
0
106
2
혹시 RxSwift 강의 계획도 있으신지 궁금합니다.
1
121
1
@Environment 질문 있습니다.
1
90
1
안녕하세요 @EnvironmentObject를 RequestInterceptor에서도 사용할 수 있나요?
0
379
1






