서론
UiKit 를 공부하면서 햇갈리는 부분을 정리해보았습니다.
화면 전환
ViewController에서 새로운 ViewController로 push를 하기 위해서는 아래와 같이 사용합니다.
@IBAction func moveNext(_ sender: Any) {
guard let secondVC = self.storyboard?.instantiateViewController(withIdentifier: "SecondVC") else {
return
}
// 네비게이션 컨트롤러를 통해 전체 화면으로 전환
self.navigationController?.pushViewController(secondVC, animated: true)
}
다만, 이 경우에는 해당 ViewController가 NavigationController
에 Embed
되어있어야 합니다. 만약 되어 있지 않으면 Modal 로 띄워야 합니다.
@IBAction func moveNext(_ sender: Any) {
guard let secondVC = self.storyboard?.instantiateViewController(withIdentifier: "SecondVC") else {
return
}
secondVC.modalTransitionStyle = .coverVertical
self.present(secondVC, animated: true)
}
여기서 modal은 전체 화면을 다 가리기 보다는 일부만 가리는 형태로 띄워집니다. 그리고 push 는 전체 화면을 가리는 형태로 띄워집니다.
모달 | 전체 화면 |
---|---|
모달 방식은 다른 말로 Present
방식이라고도 합니다.
이전 화면으로 이동
그리고 push나 modal로 띄운 ViewController는 아래와 같이 back을 할 수 있습니다.
Push 된 ViewController back
self.navigationController?.popViewController(animated: true)
Modal 로 띄운 ViewController back
self.dismiss(animated: true)
Navigation Controller
내비게이션 컨트롤러는 뷰컨트롤러의 특별한 종류입니다. 내비게이션 컨트롤러는 뷰컨트롤러를 스택에 저장하고, 스택에 저장된 뷰컨트롤러를 관리한다. 그리고 앱 내비게이션을 표시해줄수 있는 내비게이션 바가 내장되어 있습니다.
내비게이션 컨트롤러는 뷰 컨트롤러의 계층적 구조를 관리하는 역할이기 때문에, 직접 컨텐츠를 담고 화면을 구성하지 않습니다. 대신 다른 뷰 컨트롤러를 포함하고 그 뷰 컨트롤러를 관리합니다.
Root View Controller
내비게이션 컨트롤러의 루트 뷰 컨트롤러는 내비게이션 컨트롤러의 스택에 추가된 첫 번째
뷰 컨트롤러입니다. 루트 뷰 컨트롤러는 내비게이션 컨트롤러가 표시하는 첫 번째 화면
이 됩니다.
Navigation Bar
내비게이션 바는 내비게이션 컨트롤러의 뷰 계층 구조에 포함되어 있습니다. 아래 화면에 표시되는 뒤로가기 버튼 즉 내비게이션 바는 개발자가 직접 추가된 것이 아닌 내비게이션 컨트롤러가 자동으로 추가한 것입니다.
댓글남기기