2011년 10월 19일 수요일

[Xcode] 인터페이스빌더 Action/Outlet Unavailable 문제

Xcode 4.1의 버그인지 4 자체의 문제인지 모르겠지만, 간혹 UIViewController를 XIB와 함께 이용해 생성해서 해당 XIB를 인터페이스 빌더로 편집하고 액션이나 아웃렛을 연결해 둔 것에서 빌드 시 경고가 발생하는 문제가 있다. 그런데 처음부터 경고가 발생하는게 아니라 어느 순간 갑자기 발생하였다.


위 스크린샷 식의 오류다. 정확한 오류 내용은
Outlet Unavailable
The view outlet of File's Owner is connected to View but view is no longer defined on SomeView.
혹은
Action Unavailable
The 'Touch Up Inside' event of 'Rounded Rect Button (…)' is connected to the 'someButtonPressed' selector of 'File's owner', but 'someButtonPressed' is no longer defined on 'SomeView'.
식의 오류이다.

내용을 보자면 아웃렛이나 액션 등으로 연결해 둔 것이 File's Owner쪽에 없어서 경고한다는 것이다. 불행히도 실제로 연결은 잘 되어 있고 내용 자체가 사라진 것도 없다. 그렇다면 뭐가 문제란 말이지 -_-;;

결국 문제를 해결하긴 했다. 문제의 원인을 모르겠지만, 적어도 해결하려면 XIB의 인터페이스빌더 버전을 바꿔주면 된다.

문제가 발생하는 XIB파일을 선택하고 우측의 프로퍼티 탭의 첫 번째 탭을 열어서 살펴보면 Interface Builder Document - Development 라는 항목이 있다. 이를 다른 버전으로 바꿔주면서 빌드를 해 보자.


일괄적으로 3.2로 바꿔 보았더니 대부분의 문제는 해결되었는데 일부는 해결이 여전히 안되어서 3.1로 바꾸거나 4.0으로 바꾸면서 해 보니 역시 문제가 사라졌다.

문제는 고쳐졌지만 도데체 이 문제의 원인은 뭐란 말인가! 답답하다.

댓글 없음 :