2011-05-12 2 views
1

내 iPad에서 열린보기 (View1, View1Controller에 할당 됨)가 있습니다. 어떻게하면 View2 (View2Controller)를 열어서 닫을 수 있습니까? 나는 죽은 것처럼 보이지만 popovers를 관리하고 있고 그렇게 간단한 것을 찾을 수 없습니다. 가능한 경우 애니메이션 전환이 바람직합니다. 당신의 도움이iPad에서 새보기를 열고 기존보기를 닫습니다.

답변

2

에 대한

감사합니다 다음은이 작업을 수행 할 수있는 한 가지 방법의 대략적인 개요입니다.

AppDelegate의 속성이 viewController1viewController2 (메모리 관리를 쉽게하기 위해 nonatomic, retain이어야 함)이라고 가정 해 봅시다. 보기를 전환 할 AppDelegate에 알리기 위해 가장 쉬운 방법 중

// Remove the old view 
[self.viewController1.view removeFromSuperView]; 
// Release it's controller (just to economize on memory) 
self.viewController1.view = nil; 
if(self.viewController2 == nil) 
{ 
    // Load the new controller from it's NIB/XIB 
    ViewController2* vc2 = [[ViewController2 alloc] 
           initWithNibName:@"ViewController2" 
           bundle:nil]; 
    // Assign it to property & release to keep memory management clean 
    self.viewController2 = vc2; 
    [vc2 release]; 
} 
// Add the new view controller to the window 
[self.window addSubview:vc2]; 

한 다음

당신이 viewController1에서 당신이 할 제거해야 viewController2 전환 할

알림 센터를 사용하는 것입니다.

속성에서보기 컨트롤러를 보유하고 있으므로 dealloc에서 속성을 해제해야합니다. 희망이 도움이됩니다.

+0

내 견해가 닙 (nib)없이 만들어지고 대신 코드에 의해 생성 된 경우 어떻게됩니까? – David26th

+1

질문에'ViewController1'과'ViewController2'를 작성하고 있지만 initWithNib를 그냥 바꾸십시오. (비록 뷰가 코드로 생성되었다고해도, initWithNibName에'nil'을 전달하면 컨트롤러의'loadView'가 호출되어 프로그래밍 방식의 뷰를 생성해야합니다). – idz

관련 문제