0

내가 모달 뷰를 취소에 혼란이 충돌 나는 네비게이션 뷰 컨트롤러를 가지고 있고이 네비게이션 뷰 컨트롤러에서 모달 뷰 컨트롤러를 제시하고있다. 이제 dismissModalView 메소드 (탐색보기 컨트롤러 또는 모달보기 컨트롤러)를 어디에서 호출해야합니까?

사례 2 : 모달 뷰 컨트롤러가 있고 첫 번째 모달 뷰 컨트롤러에서 다른 모달 뷰 컨트롤러를 제공하고 있습니다. 자, dismissModalView 메서드 (frist 모달 뷰 컨트롤러 또는 두 번째 모달 뷰 컨트롤러)를 어디에서 호출해야하는지 두 번째 모달 뷰를 취소 할 때?

잘못된 장소에서 취소하면 앱이 다운됩니다.

답변

1

모달 뷰 컨트롤러를 처리 할 것이 좋습니다 방법으로

  • 에서 분리합니다을 제시 클래스를 알리기 위해 우리 알림입니다. 일반적으로 모달보기를 표시하기 위해 이와 비슷한 코드를 사용합니다. 위의 코드와
    SomeClass *yourViewController = [[SomeClass alloc] initWithNibName:@"SomeClass" bundle:nil]; 
    [self presentModalViewController: yourViewController animated: YES]; 
    [yourViewController release]; 
    

    , 당신이 그것을 해제 할 때 모달 뷰는 상위 뷰를 출시 할 예정 1의 유지 수와 끝까지해야하며 메모리에서 제거됩니다. 위로 부모의 ViewController에서
    - (void)dismissSelf{ 
        [[NSNotificationCenter defaultCenter] postNotifivationName:@"I'm done" object:self]; 
    } 
    

    이 OU는이 통지를 수신하고 통지가 게시 될 때 다음 모달 뷰를 기각한다 : 모달보기에서 "닫기"버튼은 다음과 같습니다 코드를 실행해야합니다. 말했다

    , 당신의 질문에 대답하기 :

    1. 모달 뷰 컨트롤러 자체를 일축하지 않습니다. 알림을 게시 한 다음 탐색 컨트롤러에서 알림을 처리하게합니다.

    2. 두 번째 모달보기를 닫을 때까지 첫 번째 모달보기를 닫을 수 없습니다. 그렇게하면 EXC_BAD_ACCESS 오류가 발생합니다. 두 번째 모달보기는 첫 번째 모달보기의 "내부"라고 생각하십시오. 첫 번째 사건이 해산되면 두 번째 사건은 그 사건으로 끌려 갈 것이지만 해산되지는 않았습니다.

  • 1
    1. 컨트롤러를 닫아야합니다.
    2. 두 번째 모달보기 컨트롤러 에서 해제해야합니다. 당신이 모달 뷰 컨트롤러를 해제하려고 할 때, 뷰 컨트롤러 대응의 범위가 손실되기 때문에

    응용 프로그램 충돌는, u는 당신이 항상에서 모달 뷰를 닫

    0

    기각하기 전에 뷰 컨트롤러를 발표 할 수있다 컨트롤러, dismissModalViewControllerAnimated를 사용하여 제시했다. 그래서 :

    1. 네비게이션 컨트롤러 최초의 모달 뷰 컨트롤러