Mobile/Swift

List UI 앱 View간의 변수 연동 @Binding

꼰대코더 2025. 2. 24. 01:38

각 VStack의 onTabGesture에 의한 버튼 "Mark as favoriate" 클릭하면  ❤ 가 표시/비표시 된다.

만약 이 변수를 서브뷰인 RestaurantInfo 에 선언을 한다면 렌더링시에 초기화가 되니 의도에 맞지 않다.

그래서 이 변수를 메인뷰(RestaurantListView) 안에 선언을 하고 서브뷰(RestaurantInfo)에 파라미터로 전달을 하지만 서브뷰에서 값의 변경이 있으면 메인뷰의 변수에도 반영이 되도록 하기 위해 서브뷰에서는 @Bind 로 선언하여야 한다.

https://sarunw.com/posts/binding-initialization/  참조 

 

 

메인뷰에서 레스토랑 수 만큼 bool 형으로 초기화하는 @State 변수를 선언

해당 레스토랑의 Favorite 상태 값을 서브뷰에 파라미터로 전달

서브뷰(RestaurantInfo)에서는 값의 변경이 메인뷰에도 반영이 되도록 @Binding 으로 정의

 

 

 

서브뷰의 VStack 안에서 레스토랑명과 ❤ 를 HStack 으로 배열

 

 

서브뷰의 VStack actionSheet 의 버튼에서는  ❤  표시/비표시 의 @Binding 변수의 true/false 변경