navigationController の View Controller を手動で編集して、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 で呼び出すと、スタック上の viewController が取得され、2 つ目 (インデックス 1 のオブジェクト) が削除され、それらが新しいスタックとして設定されます。animation:NO は、アニメーションなしで即座に実行できるようにするだけです。
このコード行を変更して、その前に s2 がない状態で s3 に到達した場合に s3 がポップされないように注意してください。また、s2 とルートの間に別のビューがある場合、削除したいビューは ではない可能性がありますobjectAtIndex:1
。