해결된 질문
작성
·
132
0
잘 알고 넘어가야 할 것 같아서 질문해요.
ProfileView에는
@State var viewModel = ProfileViewModel()
ProfileEditingView에는
@Bindable var viewModel : ProfileViewModel
클래스 연결할땐 @Bindable이라 하셨는데 첫번째에도 연결할때 클래스 연결하는거니 @Bindable 써야하는거 아닌가여? 같은 클래스를 적용하는데 다르게 하는 이유가 궁금하고,
@State var viewModel = ProfileViewModel()
@Bindable var viewModel : ProfileViewModel
하나는 변수에 담는 식이고, 하나는 타입식으로 한건지 궁금해요. 제가 초보라 질문이 엉뚱할 수 있는데 궁금해요~
답변 1
1
zergppp님 안녕하세요!
@Observable 클래스를 생성할때는 @State를 사용하고 @State 클래스를 다른 뷰에서 전달받을때는 @Bindable을 사용합니다.
ProfileView에서는 ProfieViewModel을 생성하는거라
@State var viewModel = ProfileViewModel()
이렇게 코딩하고요
참고로 괄호'()' 이게 생성하는 기호입니다.
다음 뷰인 ProfileEditingView에서는 이미 ProfileView에서 생성한 ProfileViewModel을 전달받아서 갖고 있는거라 생성하는게 아닌
@Bindable var viewModel : ProfileViewModel
이렇게 변수를 연결할 자리를 만들어놓기만 해놓은 겁니다.
그리고 전달은 ProfileEditingView(viewModel: viewModel)
이렇게 전달하는 부분에서 @State로 생성한 클래스를 전달해 준거고요.
이렇게 전달하면 @Bindable로 만들어놓은 변수자리에 잘 세팅이 됩니다.
감사합니다!