해당 포스팅은 이전 포스팅과 내용이 이어집니다.
오늘은 Navigation Controller 를 프로그래매틱 하게 조작하는 방법을 익혀보았다. 기본적으로 스택 자료구조의 기본 개념이 기반이기 때문에, 프로그래매틱하게 구현하여도 동작이 직관적인 것 같다.
Goal : 기본 Navigation Controller 없이 페이지 뒤로가기 구현하기
@IBOutlet
연결control
키를 누른 채 View Controller 로 드래그앤 드랍@IBOutlet
으로 선언한 뒤 변수명 지정 후 완료@IBAction
연결@IBAction
을 선택하고, 타입을 UIButton 으로 지정하여 메소드명 지정 후 완료위 과정을 거치게 되면, 해당 컴포넌트를 '클릭' 했을 때, 위에서 선언한 메소드가 호출된다.
따라서 아래와 같이 메소드를 만들게 되면, print
문이 실행되어 문구가 로그에 출력된다.
@IBAction func onLoginButtonClicked(_ sender: UIButton) {
print("RegisterViewController - onLoginViewControllerButtonClicked() called / 로그인 버튼 클릭")
}
viewDidLoad()
내부에 아래 구문을 선언해준다.override func viewDidLoad() {
super.viewDidLoad()
// 상단 네비게이션 바 부분을 숨김 처리
self.navigationController?.isNavigationBarHidden = true
}
@IBAction func onLoginButtonClicked(_ sender: UIButton) {
print("RegisterViewController - onLoginViewControllerButtonClicked() called / 로그인 버튼 클릭")
// 네비게이션 뷰 컨트롤러를 팝 하면 로그인 화면이 나오게 됨
self.navigationController?.popViewController(animated: true)
}
이렇게 하면, 버튼을 눌렀을 때 Navigation Controller 스택에서 '회원가입' 뷰를 팝 하는 것이기 때문에
이전 페이지였던 '로그인' 뷰가 화면에 보이게 된다.