2011-03-17 3 views
5

외부에서 내 개체에 대한 종속성을 제공하는 데 사용됩니다. 인터페이스 빌더는이 작업을 도와주는 도구이지만 여러 펜촉으로 작동하지는 못합니다. 메인 펜촉을 더 많은 파일로 분해하자마자, 다른 펜촉의 오브젝트간에 더 이상 연결할 수 없습니다. File Owner를 사용하면 하나의 객체 만 펜촉으로 전달할 수 있기 때문에별로 도움이되지 않습니다.Interface Builder를 사용하여 여러 nib에 종속성을 주입 할 수 있습니까?

예 : 여기

enter image description here

A와 B는 어떤 상위 객체 및 하위 서비스 C 및 D 일종이다. 모든 물체가 하나의 큰 펜촉 (첫 번째 그림) 안에 있으면 모든 것이 좋습니다. 그러나 펜촉을 분리하여 A와 B를 분리하면 C와 D를 연결하는 데 어려움이 있습니다 (분명히 C와 D의 두 인스턴스를 만들고 싶지 않습니다. A와 B 모두 동일한 C와 D로 이야기하고 싶습니다. 싱글 톤을 사용하지 않고).

Interface Builder에서이 작업을 수행 할 수 있습니까? 방법?

답변

2

.nib의 개체가보기 레이어와 일치합니까? 보관되지 않은 경우 사용자가 선택한 컨트롤러가 소유하며 서비스와 사용자의 견해를 중재합니다.

.nib 파일에 보관 된 모든 종류의 하위 수준 서비스 또는 모든 종류의 종속성을 갖는 것은 정말로 비 재래 적입니다.

+0

그들은 전망 그냥하지 않습니다 나는 또한 내 펜촉의 컨트롤러와 모델을 가지고 :

NSArray* topLevelObjs = nil; NSDictionary* proxies = [NSDictionary dictionaryWithObject:self forKey:@"AppDelegate"]; NSDictionary* options = [NSDictionary dictionaryWithObject:proxies forKey:UINibExternalObjects]; topLevelObjs = [[NSBundle mainBundle] loadNibNamed:@"Main" owner:self options:options]; 

상세 정보 펜촉 파일 : 그럼 당신은 프로그래밍 방식 펜촉을로드합니다. Interface Builder는 이런 식으로 사용하도록 설계되지 않았을 수도 있습니다. (결국 * Interface * Builder입니다.)하지만 전체 객체 그래프를 연결하는 것은 쉽지 않았기 때문에 저항 할 수 없었습니다. 나에게 남아있는 유일한 문제는 펜촉을 갈라 놓는 것이다. – zoul

+0

맞습니다. Interface Builder는이 방법으로 사용하도록 설계되지 않았습니다. 핵심 데이터를 보셨습니까? nib 파일을 엄격하게 유지하여 모델에 핵심 데이터를 사용하십시오. 훨씬 행복해집니다. – hooleyhoop

+0

코어 데이터가 실제로 여기에 들어 있습니까? IB를 사용하여 데이터로 OO 데이터베이스를 만들지는 않았습니다. 단순히 객체를 사용하여 종속성을 설정하는 것입니다. 'SettingsController'처럼'SettingsWindow'와'Settings' 모델에 의존하고,'Settings' 모델은 어떤 사용자 디폴트에 의존합니다. – zoul

0

외부 개체를 사용해야합니다. xib에 외부 객체를 추가하십시오. 객체 라이브러리에서 찾을 수 있습니다. 일반 오브젝트 (아울렛 등)로 사용하십시오. 외부 객체가 있기 때문에 보관 처리를 통해 생성되지는 않습니다. 직접 생성해야합니다. , https://developer.apple.com/library/content/documentation/Cocoa/Conceptual/LoadingResources/CocoaNibs/CocoaNibs.html#//apple_ref/doc/uid/10000051i-CH4-SW24

관련 문제