먼저 NavigationController 요소를 추가하고 Root는 사용하면 두고 아니라면 지워줍니다.
이후 Navigation Controller를 root로 준비한(아니면 사용할) ViewController에 우클릭 드래그로 연결해주고
NavigationController 속성에서 is initial view controller 를 체크해 줍니다.
(속성 메뉴에서 is initial view controller 체크된 viewController가 앱 실행시 처음 화면이 된다.)
이제 준비가 되었으니 화면을 전환하는 방법을 알아보겠습니다.
sugue로 push 또는 Present 하기
1. 스토리보드에서 ViewController를 추가
2. 동작을 수행할 클래스 생성
newFile -> cocoa Touch Class(UIViewController 선택)
3. 파란 부분을 눌러 class를 2번에서 만든 클래스로 지정
4. 원래 화면 버튼 -> 바뀔 화면 으로 우클릭 드래그
5. Show 선택(Present를 사용할 시 presentModally 선택)
원래 화면으로 돌아가는 방법
assistant(단축키: ctrl+opt+cmd+enter) 켜서 동작 지정
Push 일 때 돌아가기
1. 네비게이션의 Back 버튼 누르기
2. 왼쪽 스와이프
3. 버튼에 IBAction 할당
// animated는 애니메이션 여부
self.navigationController?.popViewController(animated: true) // 이전 화면으로 이동
self.navigationController?.popToRootViewController(animated: true) // 네비게이션의 첫번째 스택이 root로 이동
Present 일 때 돌아가기
(참고 - fullScreen 설정은 스토리보드 연결 Segue화살표를 클릭해 presentation 변경)
1. 위에서 아래로 쓸기 (FullScreen일 때는 불가)
2. 버튼에 IBAction 할당
self.presentingViewController?.dismiss(animated: true, completion: nil)
// completion은 동작 완료 후 실행할 클로저
Code로 push 또는 Present 하기
스토리보드에서 직접적으로 연결하는 것이 아닌 코드에 Action을 추가해push와 present를 해 보도록 하겠습니다.
먼저 스토리보드에서 이동할 viewController의 ID를 지정해 주어야 합니다.
원하는 viewController를 선택후 identify의 StoruBoard ID를 원하는 대로 정해줍니다.
이제 이 ID를 이용해 코드로 viewController에 접근해 보겠습니다.
Push
1. 해당 push 할 요소를 IBAction으로 연결
2. 버튼에 IBAction 할당
@IBAction func 액션버튼이름(_ sender: UIButton) {
// 스토리보드에서 이름 붙이고 이름을 가져옴
guard let viewController = self.storyboard?.instantiateViewController(withIdentifier: "스토리보드 아이디") else{return}
// 가져온 ViewController로 Push
self.navigationController?.pushViewController(viewController, animated: true)
}
Present
push와 기본적으로 같지만 코드가 조금 다릅니다.
1. 해당 push 할 요소를 IBAction으로 연결
2. 버튼에 IBAction 할당
@IBAction func 액션이름(_ sender: UIButton) {
// 스토리보드에서 이름 붙이고 이름을 가져옴
guard let viewController = self.storyboard?.instantiateViewController(withIdentifier: "스토리보드 아이디") else{return}
// 전체 화면으로
// 아래 코드가 없으면 modal(기본값)으로 설정
viewController.modalPresentationStyle = .fullScreen
// present 시키기
self.present(viewController, animated: true, completion: nil)
}
원래 화면으로 돌아가는 방법은 위의 방법과 같습니다.
'iOS > UIKit' 카테고리의 다른 글
[IOS] @IBDesignable , @IBInspectable (0) | 2022.02.01 |
---|---|
[IOS] 화면(ViewController)간 데이터 주고 받기 2 상위->하위 (0) | 2022.01.31 |
[IOS] 화면(ViewController)간 데이터 주고 받기 1 하위->상위 (0) | 2022.01.31 |
[IOS] View life cycle (라이프 사이클) (0) | 2022.01.30 |
[IOS]storyBoard에서 ViewController 연결하기 (0) | 2022.01.30 |