본문 바로가기
Coding

Swift Modal VS Push. View 전환의 두가지 방법. 그 차이. 스튜핏!

by BlissBless 2017. 12. 19.

아아아아아아아아아아아아아아아아아아!!!!!!!!!!!!



최근에 하고 있는 프로젝트에서 뷰를 전환 하면서  이 Modal하고 Push 설명을 들었고 듣고도 한참동안 오! 새롭다. 새로운 걸 알았어, 라며 뿌듯해 했었다.

일을 너무 오래 쉬었는지, 나이가 들어 기억이력이 떨어지는 건지 아;ㅏㅓ;ㅣㅏㅓㅐ;ㅑㅕ 아ㅏㅏㅏㅏㅏ아!!!!!!


분명 내가 내 손으로 Modal, Push로 해달라고 기획서에 직접 작성도 했었다는 사실조차 정말 까마득하게 잊었다. 아니 어떻게 이걸 잊지? 라고 자책 해봐야 슬프기만 할 뿐, 이 기회에 다시 제대로 알아두고 기억해야 겠...

스튜핏!

 



● Push와 Modal.


모바일 상에서 화면이 이동 할 때, 여러가지 이동 방법이 있는데, 그 중 두가지를 봐본다.


전체 로직의 흐름과 유관한 화면을 불러올 때는 Push

전체 로직의 흐름과 무관하지만 특정 목적을 수행하기 위한 화면을 불러 올 때는 Modal을 쓴다.

어떤 용어로 정확하게 저 방식들을 지칭하는지 모르겠으나, 여기서 Push와 Modal 이라고 지칭 하겠다.


강으로 볼 때, Push가  본류라면, Modal은 본류에서 잠시 떨어져 나왔다 본류로 합류하는 지류 같은 것.



★ Push

로직 상에서 일정한 흐름을 가지고 화면이 이동할 때, 그 로직 한 단위당 Navigation Controller에 얹어서 뷰들을 관리 하게 한다고 한다. Swift에서 화면 전환을 관장하는 Navigation Controller는 화면에 표시되고 있는 View Controller들을 Stack을 이용하여 관리한단다. depthㅎㅎㅎ 주로 옆에서 가운데로 화면이 이동. ← →


로직을 가진 흐름 상에서 화면이 바뀌게 되면, Navigation Controller 위에서 Push로 보여지게 됨.


(개발 공부 하면서 제일 힘든 부분이 내 눈이 보이지 않는걸 이해하고 적용 해야 한다는 거... 스택이 만질 수 있는 건가요, 눈에 보이는 건가요...)


아래 그림처럼, Stack이라는 애 안에다가 들어온 순서대로 차곡 차곡 Push 되어 쌓이고, 가장 위에 있는 화면이 Pop되어 화면단에서 사라지게 된다. 그리고 Stack에 제일 먼저 들어와 아래 있는 화면은 제일 나중에 Stack에서 나오게 된다. 쫌 있어보이게 이런걸 써보고 싶다. FILO (First-in, Last-out)한다고...


(출처: https://en.wikipedia.org/wiki/Stack_(abstract_data_type))



화면단에 보여지도록 (최 상위 뷰 컨트롤러에 올려지도록) 할 시에  pushViewController(_:animated:)를, 

화면단에서 보이지 않도록 제거 할 땐, popViewControllerAnimated(_:)를 사용한다.




★ 
Modal

현재의 로직/흐름을 잠깐 중단하고 뭔가를 입력 받거나, 바꾸거나 표시하거나 등등을 한 뒤에 다시 원래 로직/흐름으로 다시 돌아 가도록 할 때 쓰인다. 주로 아래서 위로 화면이 이동 했다 아래로 내려 간다. ↑↓ 


잠깐 갔다가 다시 돌아 옴.


아직까진 모달은 Segue를 이용해서 넣었고, 없앨 땐 dissmis(animated:completion:)을 이용해 화면에서 사라지게 했다.



이거 두개 띄우고 안보이게 하는데도 참 많이 헤맸다...ㅋㅋㅋ

다음에는 더 빠르게 간단하게 만들 수 있을 것 같다.