Swiftgram/submodules/LegacyComponents/Sources/TGViewController+TGRecursiveEnumeration.m
2025-06-18 17:24:21 +02:00

66 lines
1.8 KiB
Objective-C

#import <LegacyComponents/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