4

ビュー コントローラーのナビゲーションで 2 ステップ戻って、ナビゲーションを保持するにはどうすればよいですか?

触るとvc2に移動してからvc3に移動するvc1があります。たとえば、vc3 から vc1 にジャンプする方法を教えてください。

ありがとう

4

6 に答える 6

3

これを試して

    - (IBAction)back{
if(self.navigationController.viewControllers.count>2)
    [self.navigationController popToViewController:[self.navigationController.viewControllers objectAtIndex:self.navigationController.viewControllers.count-3] animated:YES];
}
于 2013-11-14T12:15:48.383 に答える
2

ただのコピーですが、より安全なアプローチ...このように試してください

- (void) turnBackToAnOldViewController{

    for (UIViewController *controller in self.navigationController.viewControllers) {
        if ([controller isKindOfClass:[AnOldViewController class]]) { 
        //Do not forget to import AnOldViewController.h

            [self.navigationController popToViewController:controller
                                              animated:YES];
            break;
        }
    }

}
于 2013-11-14T12:21:54.340 に答える
1

これを使用できます-

NSArray *controllers = [self.navigationController viewControllers];
NSLog(@"%@",controllers);

ここでは、コントローラーの配列を取得します。

int count = [controllers count];

index を渡して、好きな場所に切り替えるだけです。

UIViewController *theControllerYouWant = [self.navigationController.viewControllers objectAtIndex:(count - 2)];
[self.navigationController popToViewController:theControllerYouWant animated:NO];

これが役に立てば幸いです。ありがとうございます。:)

于 2013-11-14T12:16:59.283 に答える
0

このようにしてみてください

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"ANY SELF.class.description == %@“,[[VC1 class]description]];
BOOL exist = [predicate evaluateWithObject:[self.navigationController viewControllers]];
if (exist) {

    for (id object in [self.navigationController viewControllers]) {

        if ([object isKindOfClass:[VC1 class]]) {

            [self.navigationController popToViewController:object animated:YES];
        }
    }
}
于 2013-11-14T12:26:40.127 に答える
0

または、より柔軟なソリューション - ナビゲーション スタックを直接操作します。

元。

 NSArray *viewControllers = self.navigationController.viewControllers;
 self.navigationController.topViewController = viewControllers[i];

ここで、i はスタック コントローラーで使用可能な任意の VC にすることができます。

于 2013-11-14T12:16:05.823 に答える
0

試してみてください

NSArray *vcArray = [[self navigationController] viewControllers];
[self navigationController popToViewController:[vcArray objectAtIndex:vcArray.count-3] animated:YES];
于 2013-11-14T12:16:18.713 に答える