#import "TGViewController+TGRecursiveEnumeration.h" @implementation UIViewController (TGRecursiveEnumeration) - (void)enumerateChildViewControllersRecursivelyWithBlock:(void (^)(UIViewController *))enumerationBlock { if (enumerationBlock == nil) return; enumerationBlock(self); for (UIViewController *childViewController in self.childViewControllers) [childViewController enumerateChildViewControllersRecursivelyWithBlock:enumerationBlock]; } @end @implementation TGViewController (TGRecursiveEnumeration) - (void)enumerateChildViewControllersRecursivelyWithBlock:(void (^)(UIViewController *))enumerationBlock { if (enumerationBlock == nil) return; if (self.associatedWindowStack.count > 0) { for (UIWindow *window in self.associatedWindowStack) [window.rootViewController enumerateChildViewControllersRecursivelyWithBlock:enumerationBlock]; } enumerationBlock(self); for (UIViewController *childViewController in self.childViewControllers) [childViewController enumerateChildViewControllersRecursivelyWithBlock:enumerationBlock]; } @end @implementation UINavigationController (TGRecursiveEnumeration) - (void)enumerateChildViewControllersRecursivelyWithBlock:(void (^)(UIViewController *))enumerationBlock { if (enumerationBlock == nil) return; enumerationBlock(self); [self.topViewController enumerateChildViewControllersRecursivelyWithBlock:enumerationBlock]; } @end @implementation UITabBarController (TGRecursiveEnumeration) - (void)enumerateChildViewControllersRecursivelyWithBlock:(void (^)(UIViewController *))enumerationBlock { if (enumerationBlock == nil) return; enumerationBlock(self); [self.selectedViewController enumerateChildViewControllersRecursivelyWithBlock:enumerationBlock]; } @end