今天遇到需要刪除某一個viewController的需求,即,在一個導航控制器中想跳過某一個vc而pop到更前面的vc。
首先嚐試着在navigationController的所有方法中尋找removeXXX的方法或者deleteXXX的方法,但是翻遍navigationController的頭文件也沒有類似的方法,所以就只能曲線救國,採取其他方法實現類似的功能。在網上搜羅許久終於選擇了下面的方法
NSMutableArray *marr = [[NSMutableArray alloc]initWithArray:self.navigationController.viewControllers];
for (UIViewController *vc in marr) {
if ([vc isKindOfClass:[theVCYouWantToRemove class]]) {
[marr removeObject:vc];
break;
}
}
self.navigationController.viewControllers = marr;
記得break;否則會出一些小問題
之前也試着使用過self removeFromParentViewController];
[這個方法,但是會出現小得問題就放棄使用了。