본문 바로가기

프로그램 경험/iOS

[iPhone] Navigation Controller에 다중 뷰를 넣을때 문제

2개의 뷰를 사용하는 예제에서는 UIViewController를 세개 만들어서 첫번째 뷰에는 툴바에 버튼을 놓고 버튼클릭에 따라서 두개의 뷰를  변경하는 역활을 하고 나머지 두개는 실제로 화면에 보여줄 뷰 역활을 해서 사용하더라.

그래서 이걸 응용해서 네비게이션 컨트롤러에 첫번째 뷰를 넣어서 사용하려고 했는데 네비게이션 컨트롤러에 뷰를 푸시 할때 오류가 발생한다.

[self.navigationController pushViewController:controlView animated:YES]; //런타임중 오류


ControlView에서는 예제에서 구현한 것과 똑같이 최초 viewDidLoad할때 뷰를 insert 하고 있었다.


[self.view insertSubview:first.view atIndex:0];


왜 오류가 날까 곰곰히 고민 해봤다.

네비게이션 컨트롤러에 push한다고 viewDidLoad 이벤트가 발생하지 않을것 이라 생각했다.

그래서 오류가 난다고 생각하고 init 메소드로 코드를 옮겼다.


하지만 그래도 마찬가지 였다.

무엇이 문제일까... 

이번엔 insertSubview 가 거슬렸다. 

서브뷰를 넣는것이 아니라 메인을 넣어야 하는것이 아닌가? 하는 생각이 들어서 주석 처리 하고 아래와 같이 해봤다.


[self setView:first.view];


이제서야 문제 없이 돌아간다^^


그런데 생각해 보니... 이런 오류가 나는것은 첫번째 뷰컨트롤러에 뷰가 없기 때문이란걸 깨달았다.

첫번째 뷰컨트롤러에서는 닙파일이 필요 없다고 생각해서 지운것 때문이다.

다시 생각해보니 닙파일이 필요했다. 

첫번째 뷰컨트롤러에 툴바나 네비게이션 바를 통해서 두개의 뷰를 변경해야 하기 때문에 필요하다.


멍청한 짓을 해버렸다.