2013-08-04 3 views
2

iOS 응용 프로그램을 개발하는 데 모노 터치를 사용하고 있습니다 .3 가지 화면이 있습니다 : s1, s2 및 s3. 사용자는 s1 -> s2 -> s3과 같이 열 수 있습니다.화면에 이력이없는 경우

사용자가 s2를 열면 s1 화면으로 되돌아 가기 버튼으로 되돌아 갈 수 있지만 탐색 모음의 뒤로 버튼을 누르면 s3 화면으로 돌아가서 s1 no s2로 돌아갈 수 있습니다.

ios에서는 가능합니까? 안드로이드에서 NoHistory 속성을 사용하면이 기능을 구현할 수 있습니다. ios에도 같은 기능이 있습니까?

답변

3

navigationController의보기 컨트롤러를 수동으로 편집하여 s2를 제거 할 수 있습니다.

self.navigationController.viewControllers을 사용하면 현재 스택을 가져오고 [self.navigationController setViewControllers:animated:]을 사용하면 스택을 설정할 수 있습니다. 귀하의 경우에는

, 당신이 수행 할 수 있습니다 :

NSMutableArray *views = [[NSMutableArray alloc] initWithArray:self.navigationController.viewControllers]; 
[views removeObjectAtIndex:1]; 
[self.navigationController setViewControllers:views animated:NO]; 

이 당신의 S3의 ViewController에서, 그것은, 스택에 viewControllers를 얻을 것이다 (인덱스 1에서 개체) 두 번째를 제거 호출하는 경우, 새 스택으로 설정하십시오. animated : NO는 애니메이션없이 즉각적으로 처리합니다.

이 코드 줄을 변경하여 앞에 s2가없는 s3에 도달 한 경우 s3이 나오지 않도록 할 수 있습니다. 또한 s2와 루트 사이에 다른보기가있는 경우 제거 할 아이콘이 objectAtIndex:1이 아닐 수도 있습니다.

0

U는 뒤로 버튼을 눌러 온이

을 시도 할 수 있습니다 :

for (UIViewController * viewController in self.navigationController.viewControllers) 
{ 
    if ([viewController isKindOfClass: NSClassFromString(@"<ClassName for S3>")]) 
    { 
     [self.navigationController popToViewController: [self.navigationController.viewControllers objectAtIndex: 0] animated: NO]; 
      break; 
    } 
} 

또는 u도 사용할 수 있습니다

[self.navigationController popToRootViewControllerAnimated: NO]; 
관련 문제