產(chǎn)品提出了一個需求,返回和側(cè)滑返回都返回首頁,返回就將返回按鈕的觸發(fā)事件定義為返回首頁即可,側(cè)滑返回,只要將目標控制器和當前控制器中間的控制器刪除即可實現(xiàn),我們在viewDidLoad中定義這個方法即可
//在需要側(cè)滑到指定控制器的控制器的 view 加載完畢后偷偷將當前控制器與目標控制器之間的所有控制器出棧
//# 1. 獲取當行控制器所有子控制器
NSMutableArray <UIViewController *>* tmp = self.navigationController.viewControllers.mutableCopy;
// # 2. 獲取目標控制器索引
UIViewController * targetVC = nil;
for (NSInteger i = 0 ; i < tmp.count; i++) {
UIViewController * vc = tmp[i];
if ([vc isKindOfClass:NSClassFromString(@"HomePageViewController")])
{
targetVC = vc;
// 也可在此直接獲取 i 的數(shù)值
break;
}
}
NSInteger index = [tmp indexOfObject:targetVC];
// # 3. 移除目標控制器與當前控制器之間的所有控制器
NSRange range = NSMakeRange(index + 1, tmp.count - 1 - (index + 1));
[tmp removeObjectsInRange:range];
// # 4. 重新賦值給導(dǎo)航控制器
self.navigationController.viewControllers = [tmp copy];