closure 복습! 복습! 복습!
화면 전환 개념
보통 앱들은 단일 화면으로 구성된 앱들이 거의 없다.
여러화면으로 구성되어 있고 앱내에서 여러 화면으로 구성 되어 있다.
앱 내에선 그럼 어떻게 할까?
크게 두가지로 나뉜다.
알아보자.
소스 코드를 통해 전환하는 방식
1. View Controller의 View 위에 다른 View를 가져와 바꿔치기
- 되도록이면 사용하지 않아야 한다.
- 메모리 누수가 있을 수도 있어서 거의 사용하지 않는다.
2. View Controller에서 다른 View Controller를 호출하여 전환하기
func dismiss(animated flag: Bool,
completion: (()-> Void)? = nil)
- 이전 화면으로 돌아가기 때문에 View Controller 인스턴스를 인자로 받지 않는다.
- 첫번째 파라미터엔 애니메이션 적용 여부이다.
- 두번째 파라미터엔 closure를 받는데, 이전 화면으로 돌아가는게 완료되면 작동할 로직을 호출할 수 있다.
3. Navigation Controller를 사용하여 화면 전환하기
- 계층적인 성격을 띄는 컨텐츠 구조를 관리하기 위한 Controller이다.
- View Controller의 전환을 직접 관리하고 앱에 Navigation 정보를 표시하며, Navigation
스택
으로 자식 View Controller를 관리한다.
- Navigation Controller는 선입후출 방식으로 나중에 들어온 화면이 제일 먼저 나가는 방식이다.
func pushViewController(_ viewController: UIViewController,
animated: Bool)
- pushViewController를 사용해서 Navigation stack에 화면을 추가하고 popViewController를 사용해서 Navigation stack에 화면을 제거한다.
func popViewController(animated: Bool) -> UIViewController?
4. 화면 전환용 객체 세그웨이(segueway)를 사용하여 화면 전환하기
-
segueway에는 두개의 View Controller 사이에 연결된 화면 전환 객체를 의미한다.
-
storyboard를 이용해 출발지와 목적지를 직접 지정하는 방식을 segueway를 이용한 화면 전환 방식이라고 한다.
-
segueway를 사용하면 따로 코드를 작성하지 않고 화면을 전환할 수 있는게 특징이다.
- Action Segueway
- 출발점이 버튼일 경우 Action Segueway, trigger Segueway라고 한다.
- 버튼 터치와 같은 트리거 액션들이 Segueway와 바로 연결이 된다. 그래서 소스 코드를 추가하지 않아도 화면 전환을 할 수 있다.
- Action Segueway 종류
- Show
- Show Detail
- Present Modally
- Present As Popover
- Custom
- Manual Segueway
- 출발점이 View Controller 자체인 경우 Manual Segueway라고 한다.
- 적절한 시점에 perform Segue를 호출하면서 Segueway가 실행되어 화면 전환이 일어난다.
Storyboard를 통해 전환하는 방식