2010-07-24 9 views
0

그래서 기본적으로 기본보기에는 두 개의 하위보기가 있습니다. IB에서 라이브러리로 이동하여 뷰를 내 메인 nib 파일로 드래그 한 다음 컨트롤을 배치합니다.아이폰 : 인터페이스 빌더에서 만든 하위보기를 전환하는 방법

이제 '뒤집기'버튼을 사용하여이보기들 사이를 전환하고 싶습니다. 내가 이해할 수없는 것은 어떻게 프로그래밍 방식으로이 작업을 수행 할 수 있는지입니다.

내 질문은 : 내가 "숨기기"하위 뷰 중 하나를 누른 다음 플립 할 때 프로그래밍 방식으로 언젠가는 숨기기 해제합니까? 인터페이스 빌더를 통해 각각의 이름을 부여하고 그런 식으로합니까? 사실 실제로 플립이나 다른 작업을 수행하는 코드가 필요하지 않습니다. 프로그래밍 방식으로 IB에 빌드 된 뷰를 참조하는 방법에 대한 개념적 이해가 필요합니다. 숨겨진 것이 내 장면에서 의미가 있습니다.

Any 제안? 감사합니다

답변

6

당신은 당신의 헤더 파일에 @property (nonatomic, retain) IBOutlet UIView *myView;

IBOutlet UIView *myView;
또는
를 사용하여 IB의 일에 연결합니다. IBOutlet 키워드는 해당 콘센트를 연결할 수 있도록 IB에 지시합니다.

당신은보기에 콘센트에서 드래그하여 연결 관리자의 실제 연결합니다. (모두 귀하의 의견에 대해이 작업을 수행) making a connection http://cl.ly/eb3b5cd826b20fc9e307/content

참고 : 귀하의 의견은 필요 없어 IB의 창문 안에 있어야합니다. 외부에 만들 수 있으며 원하는 때까지 표시되지 않습니다. 앱 중 하나를 넣으면 앱이 시작될 때 표시됩니다.

그런 다음, 당신은 실제로 당신이 아이폰 OS 4.0을 사용하고있는 가정, 다른보기로 플립하고자 할 때, 그것은 간단 (3.x 및 낮은 방법이있다, 그러나 이것은 가장 쉬운 방법입니다) :

[UIView transitionFromView:myView1 
        toView:myView2 
        duration:0.2 
        options:UIViewAnimationOptionTransitionFlipFromRight 
       completion:^{ 
        // something to do when the flip completes 
       }]; 
UIView *oldView, *newView; 
UIViewAnimationOptions transition; 
if (myView1.superview) { // view 1 is already visible 
    oldView = myView1; 
    newView = myView2; 
    transition = UIViewAnimationOptionTransitionFlipFromRight; 
} else { // view 2 is visible 
    oldView = myView2; 
    newView = myView1; 
    transition = UIViewAnimationOptionTransitionFlipFromLeft; 
} 
[UIView transitionFromView:oldView 
        toView:newView 
        duration:0.2 
        options:transition 
       completion:^{ 
        // something to do when the flip completes 
       }]; 
+0

이 상세한 설명에 감사드립니다 : 동적 이미 볼 수있는 뷰를 결정하려는 경우

또는. 당신이 메인 nib 파일 외부에서 뷰를 생성하는 것을 의미하는지 이해하지 못합니다. IB에서 뷰를 만들 수 있기를 원하지만 내 주 펜촉에서만이 작업을 수행 할 수 있다고 생각했습니다. 어쩌면 내가 뭔가를 놓친 것 같은데 ...? – foreyez

+0

주 nib 파일 외부가 아니고 창 외부. 내 스크린 샷에서 "내보기 1"이 나머지 펜촉의 개체와 함께 목록에 있음을 알 수 있습니다. 실제로는 창 안쪽에 배치되지 않습니다.한 번에 하나의보기 만 화면에 표시되도록 이점을 사용해야합니다. – jtbandes

+0

나는 당신을 얻는다. 내 하위 창을 내 메인 윈도우에서 스크린 샷이 보이는 외부로 드래그하여이 작업을 수행했습니다. (나는 내가 이것을 할 수있다라는 것을 모르고 있었다!) – foreyez

2

애니메이션은 프로그래밍 방식으로 수행됩니다. (항상) 그래서 당신은 이런 식으로 뭔가를 쓰기 @interface 당신의 참조

필요합니다

IBOutlet UIView subview1; 
IBOutlet UIView subview2 
IBOutlet UIView mainView; //this depends on your structure, may be self or if you are in a controller self.view 

당신은 IB의 전망이 뷰 참조를 연결해야합니다.

그런 다음 버튼의 액션 (방법) 내에서 바로 수행

[mainView bringSubviewToFront:subview1]; 

당신이 엑스 코드의 Utitlies 템플릿 프로젝트의 코드를 확인할 수 있습니다 애니메이션이 필요합니다.

관련 문제