1

여러 탭을 표시하는 탭 표시 줄 응용 프로그램이 있습니다. 통지 예 사용자가 "뒤로"를 누를 수있는보기 컨트롤러로 이동되기를 원합니다. 내가 탭 표시 줄 수 내 응용 프로그램을 변환 할 때까지 잘 작동하는 데 사용TabBar 응용 프로그램에서 AppDelegate에 ViewController 푸시

UIStoryboard *mainStoryboard = self.window.rootViewController.storyboard; 
DetailViewController *detailViewController = (DetailViewController*)[mainStoryboard instantiateViewControllerWithIdentifier: @"detailViewController"]; 
[(UINavigationController*)self.window.rootViewController pushViewController:detailViewController animated:NO]; 

이 코드 : 내 응용 프로그램은 탐색 컨트롤러 응용 프로그램이 때 , 내 AppDelegate에이 코드를 사용했다. "self.window.rootViewController"가 더 이상 "UINavigationController"유형이 아니므로 "pushViewController"를 호출하면 메서드가 존재하지 않는다는 예외를 생성합니다. Tab Bar 응용 프로그램에서이 작업을 수행하는 방법은 무엇입니까?

감사

+0

이 새 viewcontroller가 탭 표시 줄을 덮도록 하시겠습니까? 뒤로 버튼에 무엇을할까요? – Joel

+0

예. 뉴스 앱입니다. 사용자가 알림을 스 와이프하면 뉴스 항목을 직접 보여주는보기 컨트롤러를 열고 싶습니다. 그런 다음 뒤로 누르면 일반 탭보기로 돌아가고 싶습니다. – bashan

답변

2

당신은 모달 (presentViewController:animated:completion:)로 통지 컨트롤러를 제시해야하며, 해당 컨트롤러 내부에서 당신은 위쪽 표시 줄에서, 아마 버튼을 닫을 수있는 방법을 제공합니다.

EDIT : 감사합니다. Dimitry의 답변에 감사 드리며 올바른 방향으로 갈 수있었습니다. 상위 탐색 모음과 아래 도구 모음을 유지하기 위해 작은 트릭을 만들어야했습니다. "UINavigationController"인스턴스를 사용하여이 작업을 수행했습니다. 코드는 다음과 같습니다.

UIStoryboard *mainStoryboard = self.window.rootViewController.storyboard; 
DetailViewController *detailViewController = (DetailViewController*)[mainStoryboard instantiateViewControllerWithIdentifier: @"detailViewController"]; 
UINavigationController *navigationController = [[UINavigationController alloc] initWithRootViewController:detailViewController]; 
navigationController.navigationBar.tintColor = [UIColor blackColor]; 
navigationController.toolbar.tintColor = [UIColor blackColor]; 
[self.window.rootViewController presentViewController:navigationController animated:YES completion:NULL]; 
관련 문제