2023년 1월 1일
08:00 AM
Buffering ...

최근 글 👑

[Swift-TIL] 여러 화면 이동하기 (2편)

2024. 11. 24. 01:50ㆍIOS/Swift-TIL
SMALL

1편에 이어서 2편이다.

https://stayjun.tistory.com/241

 

[Swift-TIL] 여러 화면 이동하기 (1편)

여러화면을 그려서이어붙여보는걸 배워봤다. 이 글에서는그중 여러 화면을 이동하는걸써보고자 한다. View는 하나의 화면이라는건스위프트를 배우면서 가장기초적인 지식이다. 그래서스위프

stayjun.tistory.com

안보고 왔다면 보고오길 추천한다.

 

일단은 true로 놓고,

이제부터 중요한 걸 하겠다.

 

여기서 파일을 일단 하나 더 만들어주겠다.

디테일 화면이다.

이렇게 해주고 이전에 있던 코드에서

모달 페이지라는 텍스트를 지우겠다.

여기에 이제 오른쪽 이미지처럼

디테일 페이지를 넣어준다.

잘 작동한다.

구분을 위해서 모달 페이지를

모달 페이지 2라고 작성해 보겠다.

음~ 잘 작동한다.

좋다.

그렇다면 이제 모달 화면에서

버튼을 달고 눌렀을 때

화면이 닫히게 하려면

어떻게 해야할지 구상을 해보자.

 

여러가지 방법이 있다.

그 중에서

우선은 디테일 화면에서 받아보겠다.

@Binding var showModal: Bool

그리고 버튼을 만들고

showModal은 false가 되도록하고

레이블은 "닫기" 라는 텍스트로

버튼이 생성되게 하겠다.

 

그러면

파라미터가 이야기할 거다.

그러면 여기엔 뭐가 들어올꺼냐

물어보는거다.

fix를 누르면 왼쪽 이미지와 같이 뜬다.

오른쪽 이미지 처럼 constant를 써준다.

constant는 언제나 같은 값을 말한다.

당연히 true다.

즉, 보여주는 값으로

가지고 있으라고 하는거다.

 

그러면 이제 기존 파일로 가보면

에러가 날것이다.

음.. Fix를 눌러준다.

Detail(showModal: <#Binding<Bool>#>)

뭐가 들어가야 할까?

답은 $showModal이다.

"어... 그러니까 왜?"

 

조금 더 쉽게 이해할 수 있도록

글을 작성 해 보겠다.

State 변수가 있고

Detail 파일에 State 변수와 엮여있는

Binding 변수가 있다.

 

"그게 어디서 엮어졌느냐?"

여기서 이 DetailView는

바인딩 변수가 하나가 필요하다.

(isPresented)

이렇게 수정이 되겠다.

얘도 마찬가지로 Detail는 isPresented가 필요하다.

그리고 "isPresented" 얘는 바인딩 변수다.

그리고 누구랑 엮어줄 껀지 묻고 있다.

showMoal과 엮어줄꺼다.

그리고 한번 시뮬에서도

되는지 확인을 해보니

잘 작동 하는걸 확인했다.

State 그리고 바인딩에 대한 개념

점점 이해가 되어간다.

 

상태가 바뀌어서

화면을 다시 그려야 하는

상황을 알려주는 State 변수

 

그리고

그 State 변수와 다른곳에서

Binding 할 Binding 변수

 

그래서

이 디테일을 만들 때

나는 Binding 변수가 필요하다 라고 하고

그 Binding 변수에는 누구랑 엮어줄 껀지

걸어준다면 State에 달러를 붙여서

이렇게 두개를 엮어 버린거다.

 

그래서

요 버튼을 눌렀을 때

true가 들어가고

$showModal에

true가 들어간 다음

이 둘이 지금 엮여 있으니,

그래서 버튼을 눌렀을 때

isPresented 얘가 false로 바뀌면

바깥에 있는 

얘도 False로 바뀌고

얘가 False로 바뀌면서

화면이 닫히게 된다는걸

알 수 있는 것이다.

 

이렇게 마무리를 해보겠다.

 

생각보다 이건 진짜 많이 쓰이는건데,

많이 익혀두면 훗날 도움이 잘 될듯 하다.

 

중요하기 때문에

개발자를 목표로 하는 분들이라면

무조건 이해 해야한다는걸

기억해야한다.

728x90