2012-10-12 5 views
4

그래서 스토리 보드에 뷰 컨트롤러가 3 개 있습니다 (VC1, VC2 & VC3).모달 분할 후 마지막 UIViewController 제거

각보기는 다른보기로 모달 이동이 메소드 호출하는 IBAction를 호출 버튼이 있습니다

[self doSegue: myViewController_ID]; 

-(void) doSegue:(NSString *)_myViewController_ID 
{ 
    //get UiViewController from storybord with Unique ID 
    UIStoryboard *storyboard = self.storyboard; 
    UITableViewController *svc = [storyboard instantiateViewControllerWithIdentifier:_myViewController_ID]; 

    //set presentation & transition styles 
    svc.modalPresentationStyle = UIModalPresentationFullScreen; 
    svc.modalTransitionStyle = UIModalTransitionStyleCrossDissolve; 

    //do segue 
    [self presentViewController:svc animated:YES completion:nil]; 
} 

가 한번 VC2에서, VC2로 VC1에서 갈 것을 설정할 수를

내가 원했던 것은 이전의 ViewController (VC1)를 제거하는 것이다. 그리고 VC2에서 VC3으로 이동하면 뷰 계층 구조에서 제거하거나 VC2를 스택에 추가하고 싶습니다. 나는 [self dismissViewControllerAnimated:YES completion:nil]; 방법

내가 메모리가 스택의 모든 뷰 컨트롤러 축적의 결과로 성장하지 않으려는 제공되지 않기 때문에

입니다.

참고 : 탐색 컨트롤러 또는 탭 컨트롤러 (보기 컨트롤러 만 사용)는 사용하지 않습니다.

도움 주셔서 감사합니다.

이 VC2에 그런

[self.previousViewController willMoveToParentViewController:nil]; 
[self.previousViewController removeFromParentViewController]; 

그냥 될 : 사용하여 보내기> prepareForSegue - 내가 'didn를

+0

내가 그것을 탐색 컨트롤러없이 가능하다고 생각하지 않습니다 후, 당신은 당신이 그것을 사용하지 않을 확신? – Ezeki

+0

네가 아직 깨닫지 못한다고해도 내게 네비게이션 컨트롤러가 실제로 필요해 보인다. 모달 뷰는 현재 탐색의 흐름을 방해하기위한 것입니다. "2 페이지로 이동"--- "아직 인증되지 않음"---- "현재 모드 로그인 화면"--- "인증 됨"--- "모달보기 해제"--- "2 페이지로 계속" – mkral

+0

topBar가 보이지 않기 때문에 UINavigationController를 사용하지 않는다면 쉽게 제거 할 수 있습니다. – mkral

답변

4

그냥 추측

VC2에 VC1의 참조를 유지 ... 시도 View Controller에 확실히 삽입하십시오.을 보시고 View Controller에 삽입하십시오.

- (void)dealloc 
{ 
    NSLog(@"dealloc: %@", self); 
} 

편집 : segue 다음에 각보기 컨트롤러를 제거하는 대신 메모리 경고가 나타날 때 할 수 있습니다 완료 : 당신은 또한 dismissViewControllerAnimated으로 시도 할 수 SEGUE

- (void)didReceiveMemoryWarning 
{ 
    [super didReceiveMemoryWarning]; 
    // Dispose of any resources that can be recreated. 

    // ??? 
    if ([self isViewLoaded] && self.view.window == nil) { 
     NSLog(@"UNLOADING"); 
     self.view = nil; 
     [self dismissViewControllerAnimated:NO completion:nil]; 
    } 
} 
관련 문제