ページの3段階のジャンプ、1つのキーは1級のページの需要に戻ります
1772 ワード
1.すべてのコントローラの配列を取得し、ページがCページにジャンプすると、Bページをデータから削除し、戻るボタンをクリックすると、ページはそのままAページにジャンプします.
2.コントローラ配列内でジャンプしたいコントローラの位置を直接見つけ、そのコントローラを取得してpopを行う
3.CページでBlockを定義し、「戻る」をクリックしてBlockイベントを呼び出し、Blockに戻るイベントを書く
4.
5.
- (void)back {
NSMutableArray *vcArr = [NSMutableArray arrayWithArray:self.navigationController.viewControllers];
[vcArr removeObjectAtIndex:vcArr.count-2]; //
self.navigationController.viewControllers = vcArr;
[self.navigationController popViewControllerAnimated:YES];
}
2.コントローラ配列内でジャンプしたいコントローラの位置を直接見つけ、そのコントローラを取得してpopを行う
NSInteger num = self.navigationController.viewControllers.count;
if (num > 3) {
UIViewController *popVC = self.navigationController.viewControllers[num - 3];
[self.navigationController popToViewController:popVC animated:YES];
}
3.CページでBlockを定義し、「戻る」をクリックしてBlockイベントを呼び出し、Blockに戻るイベントを書く
typedef void(^BackBlock)(void);
@property (nonatomic, copy) BackBlock backBlock;
- (void)back {
[self.navigationController popViewControllerAnimated:NO];
__weak typeof(self) weakSelf = self;
weakSelf.backBlock();
}
B.m:
C_Controller *vc = [[C_Controller alloc] init];
vc.backBlock = ^(){
[self.navigationController popViewControllerAnimated:NO];
};
[self.navigationController pushViewController:vc animated:YES];
4.
for (UIViewController *vc in self.navigationController.viewControllers) {
if ([vc isKindOfClass:[MineViewController class]]) {
[self.navigationController popToViewController:vc animated:YES];
}
}
5.
[self.navigationController pushViewController:vc animated:YES];
UINavigationController *nav = self.navigationController;
UIViewController *root = nav.viewControllers[0];
nav.viewControllers = @[root,vc];