ビュー コントローラーのナビゲーションで 2 ステップ戻って、ナビゲーションを保持するにはどうすればよいですか?
触るとvc2に移動してからvc3に移動するvc1があります。たとえば、vc3 から vc1 にジャンプする方法を教えてください。
ありがとう
ビュー コントローラーのナビゲーションで 2 ステップ戻って、ナビゲーションを保持するにはどうすればよいですか?
触るとvc2に移動してからvc3に移動するvc1があります。たとえば、vc3 から vc1 にジャンプする方法を教えてください。
ありがとう
これを試して
- (IBAction)back{
if(self.navigationController.viewControllers.count>2)
[self.navigationController popToViewController:[self.navigationController.viewControllers objectAtIndex:self.navigationController.viewControllers.count-3] animated:YES];
}
ただのコピーですが、より安全なアプローチ...このように試してください
- (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;
}
}
}
これを使用できます-
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];
これが役に立てば幸いです。ありがとうございます。:)
このようにしてみてください
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];
}
}
}
または、より柔軟なソリューション - ナビゲーション スタックを直接操作します。
元。
NSArray *viewControllers = self.navigationController.viewControllers;
self.navigationController.topViewController = viewControllers[i];
ここで、i はスタック コントローラーで使用可能な任意の VC にすることができます。
試してみてください
NSArray *vcArray = [[self navigationController] viewControllers];
[self navigationController popToViewController:[vcArray objectAtIndex:vcArray.count-3] animated:YES];