Translate

2014년 10월 16일 목요일

[iOS] "loaded the ~ nib but the view outlet was not set." 문제





시작하세요! iOS 6 프로그래밍 - 10점
데이브 마크 외 지음, 유윤선 옮김/위키북스


위의 책으로 공부를 하고있는데 예제를 따라하다가 앱을 실행시켰더니 다음과 같은 로그가 발생을 하며 앱이 중단이 되었다.


2014-10-16 22:27:34.620 View Switcher[44934:907] *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: '-[UIViewController _loadViewFromNibNamed:bundle:] loaded the "SwitchView" nib but the view outlet was not set.'
*** First throw call stack:
(0x1c8d012 0x10cae7e 0x1c8cdeb 0xf2f18 0xf3418 0xf3648 0xf3882 0x2663 0xf7b7 0xfda7 0x10fab 0x22315 0x2324b 0x14cf8 0x1be8df9 0x1be8ad0 0x1c02bf5 0x1c02962 0x1c33bb6 0x1c32f44 0x1c32e1b 0x107da 0x1265c 0x23cd 0x22f5 0x1)
libc++abi.dylib: terminate called throwing an exception
(lldb)




원인을 찾아보다가 아직 iOS 개발한지 얼마 되지 않아서 뭔얘기인지도 잘 모르겠고..
책을 보며 예제를 좀더 따라하고 실행해보니(p.175 하단 부분까지) 정상적으로 구동이 되었다.



원인은 xib 파일, Controller 파일들을 따로따로 만들어서 수동으로 엮어주고 있는부분인데

Controller(예제에서는 BIDSwitchViewController)의 view 아웃렛을 nib로 연결이 되지 않아서 문제가 발생을 하는것이었다.


책에서 기술된 내용은 다음과 같다.



이 nib에서 해야 할 일이 한 가지 더 있는데, 바로 BIDSwitchViewController의 view 아웃렛을 nib로 연결하는 일이다.

view 아웃렛은 부모 클래스인 UIViewController로부터 상속하며 컨트롤러가 자신이 관리하는 뷰에 접근할 수 있게 해준다.

이 nib 파일을 수정하기 전에는 NSObject가 File's Owner로 설정되어 있었고 NSObject에는 뷰 아웃렛이 전혀 없다.

따라서 여기서는 컨트롤러를 뷰로 연결해줘야 한다.

이를 위해서는 File's Owner 아이콘을 View 아이콘으로 컨트롤 키를 누른채로 드래그하고 view 아웃렛을 선택하면 된다.




다음과 같이 작업을 했다.





댓글 없음 :

댓글 쓰기