idghst.dev
article thumbnail
Published 2023. 3. 27. 09:00
[ SwiftUI ] DataFlow SwiftUI
728x90
반응형

@State

  • 화면 동작에 있어 상태를 나타내는 변수가 사용되는 경우
    해당 변수가 상태를 나타냄을 표시 해줍니다
struct PlayerView: View {
    let episode: Episode
    @State private var isPlaying: Bool = false
    
    var body: some View {
        VStack(spacing: 20) {
            Text(episode.title)
                .font(.largeTitle)
            Text(episode.showTitle)
                .font(.title3)
                .foregroundColor(.gray)
            
            PlayButtonView(isPlaying: $isPlaying)
            PlayingStatusView(isPlaying: $isPlaying)

        }
    }
}

 

@Binding

  • @State 로 사용하는 상태 변수를 다른 파일에서 사용하려면
    @Binding 으로 받아와 사용합니다
struct PlayButtonView: View {
    @Binding var isPlaying: Bool
    
    var body: some View {
        Button {
            self.isPlaying.toggle()
        } label: {
            Image(systemName: isPlaying ? "pause.circle" : "play.circle")
                .resizable()
                .aspectRatio(contentMode: .fit)
                .frame(height: 80)
                .foregroundColor(.primary)
        }
    }
}

 

  • 상태 변수를 바인딩으로 넘길 때는
    '$' 를 붙여 넘깁니다
PlayButtonView(isPlaying: $isPlaying)
PlayingStatusView(isPlaying: $isPlaying)

 

결과

 

 

728x90
반응형

'SwiftUI' 카테고리의 다른 글

[ SwiftUI ] View  (0) 2023.03.24
profile

idghst.dev

@idghst.dev

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!