在平常的開發(fā)中可能會遇到一些不太平常的需求姿骏,比方說我的就是從首頁A控制器 push到C控制器身笤,然后需要從C返回B豹悬,然后B再返回的話可以返回首頁A
乍一看這需求好像不太符合常理,但是有些場景下還是比較合理的液荸,就比方我這個
直接上代碼吧
// 這是 UINavigationController 中的屬性
@property(nonatomic,copy) NSArray<__kindof UIViewController *> *viewControllers; // The current view controller stack.
// 首先導(dǎo)航控制器其實是一個壓棧和出棧的過程瞻佛,在 A push 到 C 后 viewControllers 數(shù)組中只有 A 和 C,想要 pop 到 B 的話 viewControllers 中必須要有 B 才行娇钱;
// 既然這樣我們直接把 B 添加到數(shù)組中試一試吧
// viewControllers 是一個不可變數(shù)組
NSMutableArray *temp = [NSMutableArray arrayWithArray:self.navigationController.viewControllers];
viewControllerB *VCB = [[viewControllerB alloc] init];
[temp insertObject: VCB atIndex: temp - 1];
// 此時 temp 數(shù)組中存在 A -->B -->C 三個控制器伤柄,在 C 中直接 pop 即可
[self.navigationController setViewControllers: temp animated:YES];
[self.navigationController popViewControllerAnimated:YES];