pop返回指定控制器或者移除某个控制器

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]

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容