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