一. ios 遍历所有的UIViewControllers
//法一:取出所有的VC
NSArray *viewControllers = self.navigationController.viewControllers;
//法二:取出所有的VC
UINavigationController *nav = (UINavigationController *)[UIApplication sharedApplication].delegate.window.rootViewController;
__block BOOL isExist = NO;
@Weakify(self);
[viewControllers enumerateObjectsWithOptions:NSEnumerationReverse usingBlock:^(id _Nonnull obj, NSUInteger idx, BOOL *_Nonnull stop)
{
@StrongifyRetNIfNil(self);
if ([obj isKindOfClass:NSClassFromString(@"InvoiceViewController")])
{
isExist = YES;
*stop = YES;
[self.navigationController popToViewController:obj animated:YES];
}
}];
二 ios遍历所有的数组
- (void)testEnumerateObjectsWithOptionsForArrayFunc
{
NSArray *array = [[NSArray alloc]initWithObjects:@"a",@"b",@"c",@"d",@"e",@"f", nil];
//遍历数组元素
[array enumerateObjectsUsingBlock:^(id _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
CHDebugLog(@"obj=%@ idx=%ld",obj,idx);
}];
//NSEnumerationReverse 倒序排列
[array enumerateObjectsWithOptions:NSEnumerationReverse usingBlock:^(id obj, NSUInteger idx, BOOL * _Nonnull stop) {
CHDebugLog(@"idx=%ld, id=%@", idx, obj);
//当需要结束循环的时候,调用stop,赋予YES
if (idx ==3) {
*stop = YES;
}
}];
}