iOS Programming : Empty Application + Interface Builder로 NavigationController 생성하기
Dev Story/iOS Programming 2012. 3. 7. 18:46이번에는 UIViewController 추가없이 Interface Builder를 사용해 Window 위에 곧바로 NavigationController를 생성해보자.
Empty Application Template으로 Project를 생성하면 기본적으로 AppDelegate.m 파일의 아래와 같은 코드에 의해 Window가 하나 생성되어져 있지만 XIB 파일은 만들어지지 않는다.
이번에는 Interface Builder를 사용할 것이기 때문에 작업할 XIB 파일이 필요하다.
Project는 이전과 마찬가지로 Empty Application Template을 선택하여 생성한 후 아래와 같이 XIB 파일을 추가한다.
먼저 User Interface를 선택하고... Application을 선택한다.
이때 기존에 화면상에 있던 윈도우 안쪽으로는 놓을 수 없으니 빈 공간에 아무곳에나 놓는다.
NavigationTestAppDelegate.m 파일에는 위에서 property 선언해준 navigationController 인스턴스를 synthesize해준다.
다시 project 네비게이터에서 MainWindow.xib를 선택하고 옆의 Objects에서 App Delegate를 선택하면 나타나는 오른쪽 Inspector창에서 6번째 Connections Inspector를 선택하면 Outlets 항목에 위에서 property 선언해준 window와 navigationController가 나타난다.
window는 옆의 원을 클릭 후 왼쪽의 Objects - Window 항목으로 드래그하여 연결한다.
다음은 project 네비게이터에서 NavigationTestAppDelegate.m 파일을 다시 열어 navigationController를 window에 붙여주어 실행되면 화면에 표시되도록 하는 코드를 추가한다.
여기까지 하고 실행을 해보자.
놀라지 말고 시뮬레이터의 홈버튼을 눌러 프로그램을 종료했다가 홈화면에서 프로그램 아이콘을 클릭해 다시 실행해보자
어떤가??? 정상적으로 NavigationBar가 나타날 것이다.
처음에 Empty Application Template으로 project를 생성했을 때 AppDelegate.h 파일에 아래와 같이 window를 생성해주는 코드가 포함되어 있는것을 기억할 것이다.
또, 우리가 XIB 파일을 생성했을 때 ( MainWindow.xib를 확인해 볼것 ) App Delegate와 함께 기본적으로 Window가 하나 생성되어 있는 것을 알 수 있다.
따라서 현재 생성되어 있는 window는 2개가 된다.
최초 어플리케이션이 실행되면 AppDelegate.h 파일에서 생성된 window가 초기화되어 화면에 표시되기 때문에 나타나는 현상이며, 대부분의 일반적인 네이티브앱 개발 시 window는 하나만 필요하다.
우리는 MainWindow.xib를 생성할 때 만들어진 window를 사용할 것이기 때문에 AppDelegate.h에서 만들어진 window는 조금도 필요하지 않다.
즉, AppDelegate.h 파일속의 window 생성 및 초기화 코드는 불필요한 코드로 걍 삭제해버리거나 주석처리를 해버리면 된다. 아래와 같이 주석처리를 하자.
다시 실행을 해보자.
어떤가??? 이번엔 최초 실행될 때부터 정상적으로 NavigationBar가 표시되는 것을 확인할 수 있을 것이다.
이후에 ViewController를 추가하여 화면전환을 하는 내용은 이전의 포스트를 참고하면 쉽게 구현이 될 것이다.
'Dev Story > iOS Programming' 카테고리의 다른 글
iOS Programming : Scroll View에 Page Control 기능 구현하기 (3) | 2012.03.13 |
---|---|
iOS Programming : 간단히 Scroll View를 구현해 보자 (0) | 2012.03.12 |
iOS Programming : Navigation Bar의 Back button title 변경하기 (1) | 2012.03.06 |
iOS Programming : Empty Application Template 으로 Navigation controller 기본 구현하기 (2) | 2012.03.06 |
iOS Programming : Icon 투명라운드 효과 비활성화 하기 (0) | 2012.02.27 |