1、OC
NSArray *array = [NSMutableArray new];
array=self.navigationController.viewControllers;
//1、返回指定index的控制器
UIViewController *viewC = [array objectAtIndex:0];
[self.navigationController popToViewController:viewC animated:YES];
//2、
UIViewController *viewc = [UIViewController new];
for(viewc in array) {
if([viewc isKindOfClass:[指定控制器class]]) {
[self.navigationController popToViewController:viewcanimated:YES];
}
}
//3、
[vcArr removeObject:self];
[self.navigationController setViewControllers:vcArr animated:NO];
2、Swift
//返回指定界面
let marr = NSMutableArray.init(array:(self.navigationController?.viewControllers)!)
1、
for i in 0..<marr.count {
let vc= marr[i] as! UIViewController
let vcName=type(of: vc)
let PurposeVCName=type(of: 指定控制器名称())
if "\(PurposeVCName)"=="\(vcName)" {
self.navigationController?.popToViewController(vc, animated:true)
}
}
2、
for i in 0..<marr.count {
let vcName=type(of: vc)
let PurposeName=type(of: 指定控制器的后一个控制器名称())
if "\(PurposeName)"=="\(vcName)"{
let popVC= self.navigationController?.viewControllers[i-1]
self.navigationController?.popToViewController(popVC!, animated:true)
}
}
3、//将本控制器从导航栏控制器数组中移除,从而返回到跳转到本控制器的控制器
let marr = NSMutableArray.init(array(self.navigationController?.viewControllers)!)
let removeArr=NSMutableArray()
for i in 0..<marr.count {
let vc= marr[i]as!UIViewController
let vcName=type(of: vc)
let selfName=type(of: self)if"\(selfName)"=="\(vcName)"{
removeArr.add(vc)
}
}
if removeArr.count >0{
for i in 0..<removeArr.count {
let vc= removeArr[i] as! UIViewController
marr.remove(vc)
}
}
let array : NSArray=marr
self.navigationController?.viewControllers = array as! [UIViewController]