3

이전 :프로그래밍 방식으로 탐색 컨트롤러를 구축/탐색하십시오.

내 앱은 독립형 뷰 컨트롤러를 기반으로합니다. 애플리케이션 위임자의 루트보기 컨트롤러를 바꾸어 하나에서 다른 것으로 전환 할 수 있습니다.

ade.window.rootViewController = newController; 

... 지금까지는 모든 것이 올바르게 수행되었습니다.

내일 : 사용자 도움이 될 것입니다

우리는 우리의 응용 프로그램에있는 navigationController 기반의 일부를 추가 할 필요가, 우리의 탐색 :

브랜드 => 모델 이름 => 색상

그래서, 사용자는 색상을 선택한 다음 버튼을 클릭합니다. 이제 실제로 다른 탐색 UI (예 : 여러 방법으로 탐색 컨트롤러에 밀어 넣을 수없는 UIViewController ("pippo"라고 함)로 전환합니다. 나는 그렇게하고있다!).

내가 원하는 것은 "pippo"의 "Color"화면으로 돌아가는 것입니다. 그래서, 프로그래밍 I 복원 네비게이션 컨트롤러를 "이동"할 수있는 방법을 찾고 있어요, 내 말은 :

  • 나는 돈을

  • 가 지금은 브랜드에있어 내 네비게이션 컨트롤러를 복원,하지만 난 내 사용자가 여기에 있기를 바란다. 내가 선호했던 마지막 색상을 보여주고 싶다. (선호도에 저장했다.)

  • 내가 알고있는 브랜드와 모델을 어떻게 시뮬레이션 할 수 있는가?

고마워요. 앱 델리게이트에 applicationDidFinishLoading에서

답변

11

: 네비게이션 제어를 인스턴스화하는 도면으로서 창에 추가한다

UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:rootViewController]; 

[window makeKeyAndVisible]; 
[window addSubview:navController.view]; 

.

지금, 당신의 rootViewController 클래스에

(말할 수는 FirstViewController라고합니다) 당신은이 작업을 수행 할 수 있습니다 그래서

- (void)clickedAnotherButton:(id)selector { 
    // goes back to the last view controller in the stack 
    [self.navigationController popViewControllerAnimated:YES]; 
} 

:

- (void)clickedAButton:(id)selector { 
    SecondViewController *nextViewController = [[SecondViewController alloc] initWithNibName:nil bundle:nil]; 
    // and push it onto the 'navigation stack' 
    [self.navigationController pushNavigationController:nextViewController animated:YES]; 
    // and release 
    [nextViewController release]; 
} 

그리고 당신이 SecondViewController 사용 다시 스택을 통해 탐색 할 수있는

당신을 위해 그것은 갈 것이다 :

Brand와 함께 애플 리케이션 대리인의 네비게이션 컨트롤러를 루트보기 컨트롤러로 설정한다. 사용자가 브랜드를 선택하면 pushViewController:animated:Model보기 컨트롤러가 표시됩니다. 그런 다음 사용자가 모델을 선택하고 pushViewController:animated:Color보기 컨트롤러를 선택합니다. 마찬가지로 사용자가 색상을 선택하고 Pippo보기 컨트롤러를 푸시합니다. 이제 사용자가 뒤로 (또는 popViewControllerAnimated:에 전화하면) 사용자가 Pippo 컨트롤러로 이동했을 때와 동일한 상태의 Color보기 컨트롤러로 돌아갑니다.

+0

soorry, 잘못된 답을 다음과 같은 코드를 작성 : 난 내 게시물에서 인용 : "사실 (내가 할 수있는 '그 탐색 계층 구조 외부에있는"pippo을 "), 여러 가지 방법으로 nav-controller에서 밀어 붙이십시오. 그렇게하지 않으면 안됩니다!). " 그래서 당신은 내가 할 수 없다는 것을 알고 내 탐색 컨트롤러에서 'pippo'를 누르기를 원하지 않습니다. - 또한 사용자 상호 작용없이 컨트롤러를 탐색하려고합니다. : \ –

+0

viewcontroller를 탐색 스택에 푸시 할 수없는 단일 시나리오를 생각할 수 없습니다. 그러나, 당신은 보스입니다. 메소드 push 및 pop을 사용하여 사용자 상호 작용없이 스택을 탐색 할 수 있습니다. 어쨌든, 더 이상 정말로 이해할 수 없으므로, 당신을 도울 수 없습니다. –

+0

제 'pippo'는 사진 카메라 인 맞춤 이미지 픽커입니다. 그러나 애니메이션없이 내 브랜드와 모델 뷰 컨트롤러를 밀어 넣고 그 동작을 확인하려고 노력할 것입니다. –

0

두 가지 이유 AppDelegate.m 클래스에

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{ 
    MainViewController *mainViewController = [[MainViewController alloc] initWithNibName:@"MainViewController" bundle:nil]; 
    self.nav = [[UINavigationController alloc] initWithRootViewController:mainViewController]; 
    self.nav.navigationBarHidden = YES; 
    [mainViewController release]; 
    [_window addSubview:nav.view]; 
    [_window makeKeyAndVisible]; 
} 
관련 문제