본문 바로가기

iOS

[iOS] 코드로 UINavigationController 사용하기

ViewController를 다른 ViewController와 연결하는 방법에는 크게 4가지 종류가 있다.

1. NavigationController를 사용하여 화면 전환하기

2. ViewController의 View 위에 다른 View를 바꾸기

3. 다른 ViewController를 호출하기

4. Segueway를 사용하여 화면 전환하기

 

이번에는 NavigationController를 통한 화면 전환에 대하여 다루어 보려고 한다.

 

FirstVC를 설정하고, push하는 형태로 secondVC를 띄우려고 했다. 그래서 버튼을 하나 만들고 그에 대한 Action으로 아래와 같은 코드를 넣어주었다.

let secondVC = SecondViewController()
self.navigationController?.pushViewController(secondVC, animated: true)

하지만 이 코드만 가지고 있어서는 push동작은 되지 않았다.

스토리보드로 작성할 때는 ViewController에 Embeded 하는 형태로 NavigationController를 넣어주어 사용했기 때문에 위와 같은 코드만 있어도 작동했는데, 스토리보드 없이 코드만으로 작성한 이번 프로젝트에서는 작동하지 않는게 당연했다. 

 

이것을 알아내는 데에 꽤나 시간을 썼는데, 정답은 SceneDelegate에서 코드를 넣어서 FirstVC를 RootViewController로 만들어주는 것이었다..!

let fristVC = FirstViewController()
let navigationController = UINavigationController(rootViewController: fristVC)
window?.rootViewController = navigationController

위와 같은 코드를 SceneDelegate에 작성해주면 FirstViewController를 NavigationController의 RootViewController로 설정하게 된다. 

 

역시..... 알아서 되는 것은 없고 내가 다 설정해줘야하는데 왜 나만 안되지 하고 헤멘것 같다...^ㅠ^

 

'iOS' 카테고리의 다른 글

[iOS] MVC모델의 효과적인 사용  (0) 2023.09.18
[iOS] SnapKit 사용하기  (0) 2023.09.12