1

내 질문 내에서 중첩 presentModalView과 유사한 : iPhone modal view inside another modal view?Can I push a modal view controller from within another modal view controller? 그러나 한 가지 차이점이있다 : 내 컨트롤러의아이폰 다른 모달보기

없음 UINavigationControllers (나는 그들이 무엇이라고 먹으 렴) 생각하지 않습니다. 그래서

EXP = [[ExpensesViewController alloc] initWithNibName:@"ExpensesViewController" bundle:nil]; 

    [self presentModalViewController:EXP animated:YES]; 

: -> 비용 선택 제출하고 다음 코드라고

RootView (예 등, 일정을 확인, 비용을 제출하는 등 다양한 옵션) :

그래서 기본적으로 나는이 있습니다 이제 기본보기 맨 위에 모달보기가 하나 있습니다. 그럼 모달 모달보기 내에서 비슷한 코드에서 모달보기를 여는 버튼을 선택할 수 있도록하고 싶습니다 ...

위의 소개에서 두 가지 질문을 통해 기본적으로 이해할 수 있습니다. 그것은 다음과 같습니다

[controllerA presentModalViewController:Number2 animated:YES]; 

은이 대신에 같이 수 :

[self.view presentModalViewController:Number2 animated:YES]; 

나는 그것의 새로운 인스턴스를 생성하지 않고의 ViewController를 참조하는 방법을 모르기 때문에.

또한 첫 번째 모달보기로 돌아갈 수 있도록 두 번째 모달을 닫을 때가 왔습니다 (기본적으로 모달 뷰를 열어 비용을 제출 한 다음 양식의 일부로 선택 사항을 선택해야합니다. UI의 목적은 새로운 모달보기가 가장 좋습니다. 일단 선택을 결정하면 추가 세부 모달보기를 닫고 비용을 제출 한 다음 모달보기를 닫은 다음 모달보기를 닫음으로써 비용보기로 되돌아갑니다.

그래서 대신 사용 :

[self dismissModalViewControllerAnimated:YES]; 

은은 다음과 같습니다

[self.view dismissModalViewControllerAnimated:YES]; 

?

고마워 :)

답변

1

UIViewController와 서브 클래스가 그 모달 뷰 컨트롤러를 표시 할 수 있습니다. self.viewUIView 인스턴스이며 완전히 다른 것입니다. 자신을 저장하기 위해

작업의 할당한다 당신은 두 가지 규칙에 충실해야합니다

  1. 만 존재하는 새로운 모달 뷰 컨트롤러를보기 컨트롤러에서과 같이 : [self presentModal…];.
  2. 표시되는 뷰 컨트롤러에서 모달 뷰 컨트롤러 만 닫으십시오 (예 : [self dismiss…];).

이렇게하면 각보기 컨트롤러의 소유권과 책임을 명확하게 볼 수 있습니다. 또한 내가 본 거의 모든 방법을 사용하여보기 컨트롤러를 닫으려면 [self.super dismiss…];을 사용하십시오.

+0

하하, viewcontroller 클래스 내에서 presentModalViewController 호출을 중첩시킨 다음 동일한 VC 클래스에서 호출을 중첩하여 완벽하게 작동합니다. 감사합니다 :) –

0

여기에서 대리자 패턴을 사용해야합니다.루트 뷰 컨트롤러가 첫 번째 뷰 컨트롤러를 위임하게 만들고 첫 번째 뷰 컨트롤러가 두 번째 뷰 컨트롤러를 위임하게합니다.

위임 메서드를 닫은 다음 자체 참조를 사용하여 뷰를 닫을 수 있습니다.

두 번째보기 컨트롤러에서 먼저 구현 될 [delegate dismissTheView]을 호출하고 [self dismissModalViewControllerAnimated];을 호출하고 마지막보기에 도달 할 때까지 동일한 후행을 따릅니다.

+0

나는 대표자들에게 익숙하지 않지만, 그것이 효과가있을 것이라고 확신합니다. :) –