2014-03-28 1 views
-1

내 앱은 내비게이션 컨트롤러와 뷰 컨트롤러로 구성됩니다. 내 UI의 일부는 스토리 보드에서 수행되고 일부는 코드에서 시작됩니다 (viewDidLoad에서).내비게이션 막대로보기 초기화하기

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 

이것은이 될 수 있습니다 : 내 목표는 응용 프로그램이 AppDelegate에이 방법을 통해 "제대로"푸시 알림에서 시작됩니다 (백 버튼, 자성 바, 레이블 및 테이블로 구성) childViewController X를로드하는 것입니다 너희들에게 간단한 질문이지만 며칠 만에 몇 가지 질문을했다. (나의 질문 역사를 볼 수있다.) 여러 가지 방법을 시도하고, 내 응용 프로그램 후 다음 중 하나를

충돌 로드 네비게이션 바 있지만 라벨 (뒤로 버튼이 작동하지 않습니다) 이 만있는 tableView가 드래그 아래 탐색 바 있지만 검은 화면 부하 네비게이션 바없이 로드 스토리 보드에 탐색 모음이 유추되었지만 뒤로 버튼과 제목을 지정하는 코드가 있습니다. 나머지는 모두 .m 파일의 코드를 통해 수행됩니다.

사람들은이 질문을하기 전에 물어 보았지만 그 방법은 효과가 없었습니다. 푸시 알림을 통해이 childViewController를 올바르게로드하려면 어떻게해야합니까? 지금까지

내 코드 :

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{ 
NSDictionary *dictionary = [launchOptions  objectForKey:UIApplicationLaunchOptionsRemoteNotificationKey]; 

if (dictionary != nil) 
{ 

UIStoryboard *mainstoryboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil]; 
UIViewController* firstVC = [mainstoryboard instantiateViewControllerWithIdentifier:@"NotificationsViewController"]; 
[self.window.rootViewController addChildViewController:firstVC]; 
[(UINavigationController *)self.window.rootViewController pushViewController:firstVC animated:NO]; 
self.window.rootViewController.childViewControllers); 
}} 

오류 코드 :

'-[SWRevealViewController pushViewController:animated:]: unrecognized selector sent to instance 0x14575f20' 

SWRevealViewController 내 사이드 ​​바 메뉴보기 컨트롤러 내 라이브러리입니다.

UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil]; 
UIViewController *initViewController = [storyboard instantiateViewControllerWithIdentifier:@"NotificationsViewController"]; 

self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; 
self.window.rootViewController = initViewController; 
[self.window makeKeyAndVisible]; 

이 올바른의 ViewController을로드하지만, 네비게이션 바없이 :

는 또한이 방법을 시도했습니다.

답변

0

rootViewController가 SWRevealViewController 유형의 사용자 정의 컨트롤러로 설정되어있는 것처럼 보입니다. pushViewController : animated :를 rootViewController에 호출하려면 UINavigation 컨트롤러 여야합니다. 현재 해당 메시지에 응답하지 않는 컨트롤러에서 호출하고 있습니다.

스토리 보드에서 UINavigationController를 캔버스로 드래그하고 InterfaceBuilder의 루트보기 컨트롤러 화살표를 가리켜 야합니다. 그런 다음 navigationController에 원하는 ViewController를로드하십시오. (즉, 질문의 상단에있는 코드가 작동해야합니다).

+0

방금 ​​시도했지만 앱 요구 사항으로 인해 앱 사이드 바 메뉴가 필요합니다. 사이드 바 메뉴가 작동하려면 SWRevealViewController가 rootViewController로 설정되어야합니다. – user3178926

+0

그러면 UINavigationController는 어디에 있습니까? 당신은 pushViewController : animated : 뭔가를 호출해야합니다 .... – devdavid

+0

한 가지 방법은 비슷한 설정을 처리했습니다. 사용자 정의 ViewController를 rootViewController로 만들고 IB에 ContainerView를 넣은 다음 Segue를 포함하도록 설정합니다. NavigationController를 포함합니다. prepareForSegue에서, 내가 임베드 segue인지 확인한 다음, navigationController로서 destinationViewController에 대한 참조를 저장하고, 다른 컨트롤러가 푸시되고 팝되었을 때 델리게이트로 자신을 설정합니다. – devdavid