아아아아아아아아아아아아아아아아아아!!!!!!!!!!!!
최근에 하고 있는 프로젝트에서 뷰를 전환 하면서 이 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:)을 이용해 화면에서 사라지게 했다.
이거 두개 띄우고 안보이게 하는데도 참 많이 헤맸다...ㅋㅋㅋ
다음에는 더 빠르게 간단하게 만들 수 있을 것 같다.
'Coding' 카테고리의 다른 글
GET과 POST의 차이. (0) | 2017.12.15 |
---|---|
Swift View 생명주기(lifecycle): View의 탄생에서 View Out!까지 (feat. Obama out)ㅋㅋ (0) | 2017.12.13 |
JSON (0) | 2017.12.09 |
Swift 클래스, 인스턴스, 객체... 매번 헷갈리는 너. OOP (0) | 2017.12.08 |
Swift 프로토콜(Protocol) (0) | 2017.12.06 |