棧管理總結(jié)
1侈贷、基本的入/出棧
// 進(jìn)
[self.navigationController pushViewController:resCtr animated:YES];
// 出
[self.navigationController popViewControllerAnimated:YES];
2毕泌、查找棧(查)
NSMutableArray *marr = [[NSMutableArray alloc]initWithArray:self.navigationController.viewControllers];
for (UIViewController *vc in marr) {
if ([vc isKindOfClass:NSClassFromString(@"WantClass")]) {
NSLog(@"找到了")
break;
}
}
3、進(jìn)入/返回到指定棧
// 進(jìn)
[self.navigationController popToViewController:Ctr animated:YES];
// 出
NSMutableArray *marr = [[NSMutableArray alloc]initWithArray:self.navigationController.viewControllers];
for (UIViewController *vc in marr) {
if ([vc isKindOfClass:NSClassFromString(@"WantClass")]) {
[self.navigationController popToViewController:vc animated:YES];
break;
}
}
4读宙、在指定位置插入指定棧(增)
NSMutableArray *viewControllers = [self.navigationController.viewControllers mutableCopy];
for (int i = 0; i < viewControllers.count; i++){
id vc = viewControllers[i];
if ([vc isKindOfClass:[GCWKWebViewController class]]){
UIViewController *insertVC = [[NSClassFromString(@"WantClass") alloc] init];
[viewControllers insertObject:insertVC atIndex:i + 1];
[self.navigationController setViewControllers:viewControllers animated:NO];
// [self.navigationController popToViewController:insertVC animated:YES];
break;;
}
}
5彻秆、刪除指定棧(刪)
NSMutableArray *viewControllers = [[NSMutableArray alloc]initWithArray:self.navigationController.viewControllers];
for (UIViewController *vc in viewControllers) {
if ([vc isKindOfClass:NSClassFromString(@"WantClass")]) {
[viewControllers removeObject:vc];
break;
}
}
self.navigationController.viewControllers = viewControllers;
6、更改指定棧(改)
NSMutableArray *viewControllers = [[NSMutableArray alloc]initWithArray:self.navigationController.viewControllers];
for (UIViewController *vc in viewControllers) {
if ([vc isKindOfClass:NSClassFromString(@"WantClass")]) {
UIViewController *replaceVC = [[NSClassFromString(@"WantClass") alloc] init];
[viewControllers replaceObjectAtIndex:i withObject:replaceVC];
break;
}
}
self.navigationController.viewControllers = viewControllers;