Swiftgram/submodules/LegacyComponents/Sources/TGViewController+TGRecursiveEnumeration.m
2020-02-22 15:38:54 +04:00

66 lines
1.8 KiB
Objective-C

#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