inflearn logo
강의

講義

知識共有

SwiftUIのProperty Wrapper(@State, @Binding...)

@State 관련 질문입니다

解決済みの質問

252

gatewaykim

投稿した質問数 4

1

//정상 작동 하지 않는 코드

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()
}

ios swift swiftui

回答 3

1

nightdaycoding

아 어떤 상황인지 이해했습니다.

 

하위뷰의 변수와 상위뷰의 변수를 같이 변경하고 싶으면 하위 변수에 @State를 붙이면 안됩니다.

@State를 안 붙이면 하위의 전달받은 변수가 상위변수의 값과 연결되지만

만약에 @State를 붙이면 하위의 변수가 새로운 저장공간을 생성하기 때문에 연결이 끊어져버려서 그렇습니다.

 

또 의문이 있으시면 질문 주세요~! 강의 구매해주셔서 감사드립니다!

0

nightdaycoding

gatewaykim님 안녕하세요.

제 환경에서는 두 코드다 정상작동하는데요.

image

혹시 xcode를 한번 껐다 켜보시겠어요?

하위뷰에 @State가 있어도 사실 문제될게 없는거 같거든요.

 

0

gatewaykim

오잉? 둘 다 되나요?

저는 xcode 닫았다가 다시 열고 시뮬레이터로도 돌려보았으나

변수 하나의 값만 올라갑니다

image

0

gatewaykim

(저기 파란색 "짝" 버튼을 눌렀을 때 숫자 카운트가 둘다 올라가야 해요)

0

gatewaykim

강의를 다시 차근 차근 돌려보니...

@State 변수는 선언된 곳에서만 값이 수정될 수 있기 때문이다

맞나요?

수강 기간 연장 문의

0

24

1

수강연장부탁드려도될까요..

0

40

2

Combine Playground 에서 실행 시

0

54

2

70강 - 글로벌 액터로 격리된 Protocol 을 extension 에서 conform 시 타입 본체의 격리 수준 질문

0

41

1

searchable이 화면 하단에 위치해요

0

60

2

Drawing Cycle 관련 질문

0

72

1

앱 제작 시 주로 코드로 작성하시는 이유가 있을까요?

0

94

2

델리게이트 패턴 관련 질문

0

66

2

ios 애드몹 광고

0

126

2

수강 기간 연장 부탁드릴 수 있을까요?

0

60

1

활용 앱 57강 질문입니다.

0

54

1

그래프 그리기 위한 API가 프리미엄 요금제를 구독해야만 가능하다고 합니다...ㅜㅜ

0

75

2

과거 ai없을때 듣고 다시 듣는 중인데

1

55

1

활용 앱 30강 에러 질문입니다

0

63

2

예제 빌드시 The compiler is unable to type-check this expression in reasonable time 에러 발생

0

53

1

TextField 에 Binding 으로 연결하면 에러 발생

0

52

1

xcode 26.2 에서 ReducerOf<Self> 이슈

0

76

2

20강 Task 내부에서 nonisolated async 호출 예제 질문드립니다

0

76

2

19강 Actor 의 동작 관련해 질문드립니다

0

82

2

기초앱 17강 Contraints 설정 질문입니다.

0

67

2

예제 코드가 안나와요

0

95

2

혹시 RxSwift 강의 계획도 있으신지 궁금합니다.

1

106

1

@Environment 질문 있습니다.

1

73

1

안녕하세요 @EnvironmentObject를 RequestInterceptor에서도 사용할 수 있나요?

0

370

1