2011-01-24 3 views
0

모달보기 컨트롤러를 팝하는 기본 창이 있습니다. 이 모달 뷰 컨트롤러에서 완료되면 주 창으로 돌아가서 자체를 닫습니다. 그러면 메인 창에 animated = YES를 가진 새로운 모달보기 컨트롤러가 나타납니다.iPhone - 이전 ModalViewControllerAnimated 닫기 : 예 다음 새 ModalViewControllerAnimated : 예 - 실패합니다.

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

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

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]; 
} 

내가 무엇을 할 수 있을까요? 나는보기에 무엇이든 잡으려고하지 않습니다. Disapear ...

왜 같은 항해 컨트롤러에서 호출되지 않았습니까?

+1

동일한 버그 (?)를 치는 것을 기억합니다. 짧은 타이머로 두 번째 모달보기를 보여주는 것을 연기했습니다. –

답변

2

이유는 애니메이션을 닫을 때 그럴 가능성이 높습니다. NSObject에서 상속 된 메서드 performSelector:withObject:afterDelay:을 사용하여 두 번째 모달 창을 표시해보십시오. 참조 번호 here.

+0

당신은 어떤 종류의 전화를 생각하고 있습니까? – Oliver

+0

팁 : 각 방법에 매개 변수가 있습니다 ... 한 가지 예를 보여주기 위해 편집 된 질문 – Oliver

+0

Colide가 동일한 탐색 컨트롤러에서 호출되지 않아서 닫히는 이유는 무엇입니까? – Oliver