2013-04-26 1 views
2

여기에 거래가 있습니다 : UIViewController의 사용자 정의 하위 클래스 인 DEFacebookComposeViewController을 사용하고 있습니다. 이 하위 클래스는 xib을 사용하여 사용자 인터페이스를 설정합니다.추가 동작을 추가하기 위해 사용자 정의 UIViewController (xib)를 서브 클래스 화합니다.

이제는 DEFacebookComposeViewController에 몇 가지 추가 GUI 요소를 추가하여 MySubclassDEFacebookComposeViewController : DEFacebookComposeViewController과 같은 이름의 하위 클래스를 만들고 xib를 만들 것이라고 생각했습니다.

그러나 xib MySubclassDEFacebookComposeViewController.xib에는 DEFacebookComposeViewController.xib의 GUI 요소가 표시되지 않으므로 해당 클래스의 하위 클래스이므로 생각했습니다.

기본적으로 하위 클래스 UIViewControllerxib에 새로운 요소를 추가 할 때 올바른 접근법은 무엇인지 궁금 할뿐입니다.

답변

2

DEFacebookComposeViewController.xib을 복사하고 MySubclassDEFacebookComposeViewController.xib으로 이름을 바꾸고 원하는대로 편집하십시오.

당신이 사용하는 경우 : UIViewController에의 다큐에서

을 만들 때

의 UIViewController는 (심지어 끝의 컨트롤러 부분없이) 같은 이름의 펜촉/XIB에 대해 기본적으로 볼 것이다 보기 컨트롤러를 저장하는 nib 파일은 뷰 컨트롤러를 초기화 할 때 nib 파일을 명시 적으로 지정하는 것이 좋습니다. 그러나 nib 이름을 지정하지 않고 사용자 정의 하위 클래스의 loadView 메소드를 대체하지 않으면보기 제어기는 다른 수단을 사용하여 nib 파일을 검색합니다. 특히 적절한 이름이 인 .nib 확장자가없는 nib 파일을 찾고 해당뷰가 필요할 때마다 해당 nib 파일을로드합니다. ,

뷰 컨트롤러 클래스 명칭이 "제어기"로 끝나면 MyViewController에 , 그것은 그 펜촉 파일 같다 : 구체적으로는 다음과 같은 이름 하나 펜촉 파일 (순서) 보이는 name은 MyView.nib처럼 "Controller"라는 단어가없는 클래스 이름과 일치합니다. 이름이보기 컨트롤러 클래스의 이름과 일치하는 nib 파일의 경우 으로 보입니다. 예를 들어 클래스 이름이 MyViewController이면 으로 MyViewController.nib 파일을 찾습니다.

따라서 사용하려는 펜촉을 지정하거나보기 컨트롤러 뒤에 이름을 지정해야합니다. 이전 펜촉을 추가/수정하려면 복사본이 필요합니다.

DEFacebookComposeViewController.xib에는 기본적으로 IBOutlets이 없다고 가정합니다. 있다면 기존 펜촉을 수정하실 수 있습니다 viewDidLoad. IBOutlets에 관계없이 뷰가로드 된 후에도 더 많은 하위 뷰를 추가 할 수 있습니다.

+0

좋아, "... DEFacebookComposeViewController.xib에 기본적으로 IBOutlets이 없다고 가정하면 무엇을 의미합니까?" xib가 인터페이스 빌더와 .h/.m 파일을 연결한다는'IBOutlets'을 가지고있는 것은 xib의 목적이 아닙니까? 최초의'DEFacebookComposeViewController.m'는'IBOutlets'로 가득차 있습니다. –

+0

IBOutlets로 모든 것을 연결할 필요는 없습니다 - 일반적인 것은 아니지만. 콘센트가 "가득"있다면 콘센트를 사용하여 기존보기를 코드를 통해 원하는대로 재구성하고 코드를 통해 새 하위보기를 추가하십시오. – Pfitz

관련 문제