2013-04-18 1 views
0

좋아요, 그래서 다음 질문에 대한 답을 찾으려고했습니다. AppDelegate에서 푸시 알림이 도착하면 특정보기 컨트롤러를보기로 밀어 넣는 방법은 무엇입니까?rootViewController가 UINavigationController가 아닌 경우보기 푸시

그리고 대부분의 대답은 rootViewController가 UINavigationController 인 경우 StoryBoard를 통해 뷰를 인스턴스화하고 해당 루트 탐색 컨트롤러로 밀어 넣어야한다는 것입니다.

내 상황이 여기에 있습니다. 여기 내 스토리 보드의 구성 방법은 다음과 같습니다

enter image description here

을 그래서 당신은 내 rootViewController가 UINavigationController가없는 볼 수있다. 그렇다면 스토리 보드에서 특정 뷰를 푸시하는 방법은 무엇입니까?

참고 : 푸시 알림을위한 별도의 모달보기를 제공하는 것은 좋은 생각이 아닙니다. 내 마지막 수단이야.

애플 메일 및 메시지 앱에서와 같은 해결책을 원합니다.

+0

navigationController에 rootViewController를 추가하고 navigationBar를 숨겨 둘 수 있습니까? – Anupdas

+0

그렇습니다.하지만 StoryBoard에서 다른 뷰를 어떻게 밀어 넣을 수 있습니까? 또는 새로운 것을 만들고 보여줄 수 있습니까? –

+0

어떤 컨트롤러에서이 새보기 컨트롤러를 표시 (푸시)하고 싶습니까? (알림이 들어올 때 화면에있는 컨트롤러에서 밀어 넣을 수 있기를 원합니까?) 이 새로운 컨트롤러의 목적은 무엇입니까? 그것이 무엇인지에 따라 모달 표현이 더 적절할 수 있습니다. – rdelmar

답변

0

좋아, 나는 쉽게 포기하지 않는 것 같아 :) 다음은 내 문제에서 발견 한 해결책입니다. 모달 뷰 컨트롤러 내에서 메인 앱 뷰를 제공하기 때문에 여기에 내가 한 일이 있습니다 :

iOS 5부터 모든 뷰 컨트롤러에는 presentedViewController 속성이 있습니다. 일단 당신이 그것을 알게되면, 거기에서 꽤 쉽습니다. 그것은 tabBarController 인 경우, 또는이 네비게이션 장치의 경우 특정 뷰 컨트롤러를 밀어 : 여기 AppDelegate.m

지금 당신은 당신의 뷰 컨트롤러를 가지고 있기 때문에
- (void) application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo { 
    if ([[userInfo objectForKey:@"notificationType"] isEqualToString: @"messageType"]) { 

    UITabBarController * tabBarController = (UITabBarController *)[self.window.rootViewController presentedViewController]; 
[tabBarController setSelectedIndex:kChatViewIndex]; 
// My view controller that I presented modally is a tabBar, your case can be different. 

// ... so from here I can reach any navigation controller or any other view from inside my app 

} 

내부에서 일부 특정 코드, 당신은 setSelectedIndex를 사용할 수 있습니다.

이렇게하면 비슷한 문제가있는 사람에게 도움이 될 것입니다. 건배!