2009-12-15 4 views
0

관련 컨트롤러가있는 기본보기가 하나 있습니다. 나는 사용자 상호 작용에 따라 다소 바뀌는 툴바가 있습니다.iPhone 사용자 인터페이스 분해 - 하나의 xib에 여러 개의보기가 있습니까?

일을 단순하게 유지하기 위해 모든 종류의 종속 된 종속성이나 실제로 깊은 위임 체인을 사용하는 대신 주 뷰 컨트롤러로 도구 모음을 관리합니다.

어쨌든 하나의 xib에 여러 개의보기를 갖고 제대로 초기화 할 수 있습니까? 내 사용자 정의보기 중 하나를 화면의 중앙에 표시하려는 경우, 어떻게하면됩니까?

다른 방법으로보기를 여러 xib로 분리하면 IBOutlets/IBActions에 대해 동일한 컨트롤러 객체를 참조 할 수 있습니까?

+0

복제 : http://stackoverflow.com/questions/1726250/nsviewcontroller-and-multiple-subviews-from-a-nib –

답변

2

, 어떻게 여러보기 하나의 XIB에서 을 가질 수 있으며이를 제대로 초기화? 마치 화면의 가운데에 내 사용자 정의보기 중 하나 인 을 표시하려는 경우 어떻게해야합니까?

x12에 원하는만큼 많이 넣을 수 있습니다. UIView s. 일반적으로 파일 소유자의보기 속성 (예 :보기 컨트롤러)에 연결되는 '기본'보기를 만들고 나머지는 같은 수준의 xib에 넣을 수 있습니다. 뷰 컨트롤러의 다른 속성에도 연결할 수 있습니다.

기본보기의 경우이보기를 하위보기으로 만들 수 있습니다. (몇 가지, 그것은 많은 관점입니다). 두 가지보기가 있다고 가정 해 보겠습니다. FooViewBarView 시작시 FooView이 나타나길 원합니다. 그래서 당신은 단지 BarView을 IB에서 감추어두기 만하면됩니다. 당신이 하나를 숨기고 다른 표시하도록 setHidden: 방법을 사용,보기를 변경하고자 할 때,

@interface MyViewController : UIViewController 
{ 
    FooView* fooView; 
    BarView* barView; 
    ... 
} 
... 
@property (nonatomic, retain) IBOutlet FooView* fooView; 
@property (nonatomic, retain) IBOutlet BarView* barView; 
... 

그런 다음, 코드 내부 : 그런 다음 뷰 컨트롤러는 다음과 같이 보일 수 있습니다.I 여러 xibs으로보기 구분 경우

대안, 어떻게 그들 자신 IBOutlets/IBActions 동일한 제어기 오브젝트를 참조 할 수 있습니까?

다른보기 컨트롤러를 공유 할 수 있습니다. 나는 많은 것을 혼자 다했다. 파일 소유자를 적절한 클래스로 설정하기 만하면됩니다.

2

실제로는 매우 간단합니다. XIB 파일에 새로운 루트 수준보기를 만들고 주보기 컨트롤러에서이보기에 대해 IBOutlet을 만듭니다.

동일한보기 컨트롤러를 공유하는 XIB에서 직접보기를로드하는 경우에는 좀 더 엉성한 것입니다. XIB 파일의 항목을 반복하여 찾고있는 요소를 찾아야합니다.

+0

이 작업을 수행했지만 BarView를 MainViewController로 드래그하지 않았습니다. 그것은 나타나지 않습니다. 어떻게 표시 할 수 있습니까? – DevDevDev

+0

신경 쓰지 마시고 하위 뷰로 추가해야합니다. 나는 그것을 성공시키지 않으려 고 생각했지만, 효과가 있었다고 생각했다. – DevDevDev

0

이 접근법에서주의해야 할 점은 모두보기가 필요하면보기가 초기화되는 것입니다.

보기가 단순하면이 것은 중요하지 않을 수 있지만보기가 복잡하면 응용 프로그램로드가 느려질 수 있습니다.

보기가 다소 복잡한 경우 파일을 다른 .xib 개로 분할해야합니다. 이 경우 부모 UIViewController은 IBOutlets가 UIViews가 아닌 다른 UIViewController 하위 클래스의 IBOutlets를 갖습니다. 뷰 컨트롤러는 자동으로 각보기의 지연로드를 처리합니다. 어쨌든

관련 문제