2011-05-16 4 views
2

코코아를 처음 사용하고 제 nib 파일을 여러 개의 nib 파일로 분할하는 데 문제가 있습니다.다른 nib 파일의 nib File 's Owner를 어떻게 설정합니까?

MainMenu.nib에는 Tracker Controller 개체가 포함되어 있습니다.이 개체는 NSObject의 하위 클래스입니다. 그것은 내 메인 메뉴에 Show Tracker 메뉴 항목에 대한 콘센트가 있습니다.

TrackerWindow.nib은 파일 소유자 등급이 TrackerController으로 설정되어 있으며 해당 nib 파일의 창과보기에 대한 아웃렛이 있습니다.

두 번째 펜촉의 파일 소유자를 첫 번째 펜촉에서 인스턴스화 된 TrackerController의 프록시로 만드는 방법을 모르겠습니다. (나는 첫 번째 펜촉에 TrackerController 인스턴스가 있어야 메뉴 항목 콘센트를 설정하기 위해 IB를 사용할 수 있다고 생각합니다.)

내가 잘못 했습니까? 그렇다면 IB를 사용하여 여러 nib 파일에서 동일한 객체의 콘센트를 설정하는 방법은 무엇입니까? 그렇지 않다면, 두 번째 덩어리의 파일 소유자가 이미 첫 번째 덩어리로 인스턴스화 한 TrackerController을 가리 키도록하려면 어떻게해야합니까?

답변

2

이것은보기 컨트롤러를 사용하여 iOS 개발자의 관점에서 작성되었습니다. Mac OS X의 차이점을 모르지만 아이디어를 이식하는 것은 어렵지 않습니다.


펜촉의 파일의 소유자를 설정하는 가장 간단한 방법은 loadNibNamed:owner:options:에 인수로 제공하는 것입니다 : 위의

[[NSBundle mainBundle] loadNibNamed:@"Tracker" owner:trackerController options:optionsDict]; 

코드 조각은 trackerController이의 UIViewController의 인스턴스가 있다고 가정합니다. 그렇지 않은 경우 다음 해결책을 대신 사용하십시오.

NSDictionary *proxyDict = [NSDictionary dictionaryWithObject:trackerController forKey:@"trackerController"]; 
NSDictionary *optionsDict = [NSDictionary dictionaryWithObject:proxyDict forKey:UINibExternalObjects]; 
TrackerViewController *trackerViewController = [[[TrackerViewController alloc] init] autorelease]; 
[[NSBundle mainBundle] loadNibNamed:@"Tracker" owner:trackerViewController options:optionsDict]; 
// Display trackerViewController 

가 Tracker.nib에서 trackerController의 식별자와 외부 개체 만들기 :


대신 initWithNibName:bundle:를 사용하는 다음과 같이 (trackerController 기존 TrackerController 객체에 대한 참조입니다)를 TrackerViewController를 만들 아웃렛/액션을이 객체에 연결하십시오.

+0

감사합니다. 올바른 길을 찾아주세요. 이미'MainMenu.nib'에서'trackerController'를 인스턴스화 했으므로 다음과 같이 사용했습니다 : [NSBundle loadNibNamed : @ "TrackerWindow"owner : self.trackerController];'. – nfm

관련 문제