2013-04-16 3 views
1

내 앱에는 Storyboard을 통해 초기 루트 컨트롤러로 선언 된 ECSlidingViewController이 있습니다. 내 AppDelegate에의 didFinishLaunchingWithOptions 방법에서, 나는 위와 같이 인스턴스화 : 내가 원하는 것은 글로벌 모달 뷰 컨트롤러를 보여줄 수있을 것입니다ECSlidingViewController의 현재 모달 뷰 컨트롤러

self.slidingController = [[UIStoryboard storyboardWithName:@"AppStoryboard" bundle:[NSBundle mainBundle]] instantiateViewControllerWithIdentifier:@"ECSlidingViewController"]; 

(예 : 응용 프로그램이 활성화 된 상태에서 푸시 알림이 도착할 때.) 모르고있는 컨트롤러는 현재 슬라이딩 컨트롤러에서 최상위입니다.

나는 (내 AppDelegate에에)입니다 무엇을 :

[self.slidingController.topViewController presentModalViewController:controller animated:YES]; 

하지만이 작동하지 않습니다.

어떤 컨트롤러가 topViewController인지에 관계없이 슬라이딩 컨트롤러에서 모달 컨트롤러를 표시 할 수있는 방법이 있습니까?

추신. 없으면 내가 원하는 것은 ECSlidingViewController 대신 SWRevealViewController으로 작동 할 가능성이 있습니까? 그것이 가치가 있다면, 나는 고통스러운 길로 전환 할 것입니다.

미리 감사드립니다. ECSlidingViewController은 스토리 보드의 초기 뷰 컨트롤러로 설정되어있는 경우

+0

시도'[self.slidingController presentModalViewController : 컨트롤러 애니메이션 : 예];'.topViewController'없이. – alexcristea

+0

이미 시도해 보았습니다. 그것은 나에게 "경고 : 를 보여 주려하지만,보기가 창 계층에 없다!" – ozzotto

+0

ECSlidingViewController를 rootViewControllr로 설정합니다. 'self.rootViewController = [[AppStoryboard] 번들 : [NSBundle mainBundle]] instantiateViewControllerWithIdentifier : @ ""ECSlidingViewController "]; – alexcristea

답변

1

을 시도, 왜 당신은 당신의 애플 대리자 코드에서 다른 하나의 인스턴스입니까? 그렇게함으로써, 당신은 스토리 보드에 의해 화면 상에 놓여진 것보다 다른 ECSlidingViewController 인스턴스에서 당신의 메소드를 호출 할 것입니다. 이것은 아마도 문제의 원인 일 수 있습니다. 대신,이처럼 ECSlidingViewController에 대한 참조를 얻을 :

self.slidingController = self.window.rootViewController; 

이 그런 시도

self.slidingController.topViewController presentModalViewController:controller animated:YES]; 

또는 내가 ECSlidingViewController 함께 일하지 않은

self.slidingController presentModalViewController:controller animated:YES]; 

을, 그래서 난 몰라 이것들 중 어느 것이 효과가 있을지 모른다.

+1

그게 문제 였어! AppDelegate에서 ECSlidingViewController 인스턴스화. 그래서 제가 한 것은'자아입니다.slidingController = (ECSlidingViewController *) self.window.rootViewController;' – ozzotto

0

UIViewController *rootViewController = self.window.rootViewController; 
// You now have in rootViewController the view with your "Hello world" label and go button. 

// Get the navigation controller of this view controller with: 
UINavigationController *navigationController = rootViewController.navigationController; 

[navigationController.topViewController presentModalViewController:controller animated:YES]; 
+0

죄송합니다. 내 rootViewController는 topViewController가 항상 UINavigationController가 아닌 ECSlidingViewController입니다. 고마워! – ozzotto

관련 문제