2011-01-25 3 views
0

다른 모달 뷰 컨트롤러를 표시 한 다음 첫 번째 모서리가 사라지는 동안 두 번째 모달보기 컨트롤러를 표시 할 수있는 방법을 찾고 있습니다.iPhone - 원활하게 표시 2 연속 모달보기 컨트롤러

문제는 첫 번째 modalviewcontroller 내부에서 수행 된 닫기 호출이 둘 다에 적용되고 SecondController가 표시되지 않는다는 것입니다.

부모 호출 전후에 첫 번째 해제는 아무 것도 변경하지 않습니다. 첫 번째 해제가 animate = NO로 설정되면 모든 것이 정상적으로 작동합니다. 하지만 애니메이션이 필요해.

이렇게 할 계획 이었지만 문제는 첫 번째 modalviewcontroller 내부에서 수행 된 닫기 호출이 둘 다에 적용되고 SecondController가 표시되지 않는다는 것입니다.

왜 각 모달보기에는 자체 탐색 컨트롤러가 있으므로 충돌하지 않아야하는지 이해할 수 없습니다.

0.5 초 후에 NSTimer로 두 번째 모달보기를 표시하여 다른 방법을 시도했지만 만족스럽지 않습니다. 두 번째보기는 첫 번째보기가 완전히 사라 졌을 때 나타납니다. 전혀 매끄럽지 않음 ... 지연 시간을 0.5 초 미만으로 설정하면 두 번째 모달 뷰가 표시되지 않습니다. 그리고 이것을 만들기 위해 타이머를 사용하는 것이 좋은 코딩 방법이 아닌 것 같습니다.

Main.m

- (void) entry { 

    FirstController *nextWindow = [[FirstController alloc] initWithNibName:@"theNIB" bundle:nil]; 

    nextWindow.caller = self; 

    UINavigationController* navController = [[UINavigationController alloc] initWithRootViewController:nextWindow]; 

    [self.navigationController presentModalViewController:navController animated:YES]; 

    [nextWindow release]; 
    [navController release]; 
} 


- (void) thingsDoneInFirstModalController:(OBJECT)returnValue retval2:(OBJECT2)returnValue2 { 
    [self display2ndController]; 
} 

- (void) display2ndController { 

    SecondController *nextWindow; 

    nextWindow = [[SecondController alloc] initWithNibName:@"NIB2" bundle:nil]; 

    UINavigationController* navController = [[UINavigationController alloc] initWithRootViewController:nextWindow]; 
    [self.navigationController presentModalViewController:navController animated:YES]; 
    [navController release]; 
    [nextWindow release]; 
} 

1 ModalViewController.m는

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { 

    [self.navigationController dismissModalViewControllerAnimated:YES]; 
    [self.caller thingsDoneInFirstModalController:theResult retval2:someMoreResult]; 
} 

당신은 몇 가지로, (첫 번째는 사라지고 동안 두 번째보기가 나타나는지 확인합니다)이를 가능하게하는 방법을 알고 계십니까 예를 들어 코드?

감사합니다.

답변

0

가짜 ViewController를 만들어 두 번째 것으로 사용하십시오.

+0

조금 더 설명해 주시겠습니까? 무슨 뜻인지 모르겠군요 ... – Oliver

+0

조금 더 답변을 설명해 주시겠습니까? – Oliver

+0

글쎄, 내가 틀렸어 보인다, 그것은 미리/2 viewcontrollers를 동시에 해제 할 수 없습니다. 다음은 내가 가진 것입니다. 2011-01-26 17 : 38 : 55.380 test [4415 : 207] *** 캐치되지 않은 예외 'NSInternalInconsistencyException'으로 인해 앱을 종료합니다. 이유 : '에서 모달 전환을 시작하려고합니다. >을 로 변경하십시오. ViewDidAppear/viewDidDisAppear가 현재 전환이 ' – Max