ComponentKit/Core/CKComponentControllerEvents.mm (48 lines of code) (raw):
/*
* Copyright (c) 2014-present, Facebook, Inc.
* All rights reserved.
*
* This source code is licensed under the BSD-style license found in the
* LICENSE file in the root directory of this source tree. An additional grant
* of patent rights can be found in the PATENTS file in the same directory.
*
*/
#import "CKComponentControllerEvents.h"
#import <ComponentKit/CKInternalHelpers.h>
#import "CKComponentController.h"
#import "CKComponentControllerProtocol.h"
BOOL CKComponentControllerAppearanceEventPredicate(id<CKComponentControllerProtocol> controller)
{
return CKSubclassOverridesInstanceMethod([CKComponentController class], [controller class], @selector(componentTreeWillAppear));
}
BOOL CKComponentControllerDisappearanceEventPredicate(id<CKComponentControllerProtocol> controller)
{
return CKSubclassOverridesInstanceMethod([CKComponentController class], [controller class], @selector(componentTreeDidDisappear));
}
BOOL CKComponentControllerInitializeEventPredicate(id<CKComponentControllerProtocol> controller)
{
return CKSubclassOverridesInstanceMethod([CKComponentController class], [controller class], @selector(didInit));
}
BOOL CKComponentControllerInvalidateEventPredicate(id<CKComponentControllerProtocol> controller)
{
return CKSubclassOverridesInstanceMethod([CKComponentController class], [controller class], @selector(invalidateController));
}
void CKComponentScopeRootAnnounceControllerAppearance(CKComponentScopeRoot *scopeRoot)
{
[scopeRoot enumerateComponentControllersMatchingPredicate:&CKComponentControllerAppearanceEventPredicate block:^(id<CKComponentControllerProtocol> scopedController) {
CKComponentController *controller = (CKComponentController *)scopedController;
[controller componentTreeWillAppear];
}];
}
void CKComponentScopeRootAnnounceControllerDisappearance(CKComponentScopeRoot *scopeRoot)
{
[scopeRoot enumerateComponentControllersMatchingPredicate:&CKComponentControllerDisappearanceEventPredicate block:^(id<CKComponentControllerProtocol> scopedController) {
CKComponentController *controller = (CKComponentController *)scopedController;
[controller componentTreeDidDisappear];
}];
}
void CKComponentScopeRootAnnounceControllerInitialization(CKComponentScopeRoot *scopeRoot)
{
[scopeRoot enumerateComponentControllersMatchingPredicate:&CKComponentControllerInitializeEventPredicate block:^(id<CKComponentControllerProtocol> scopedController) {
CKComponentController *controller = (CKComponentController *)scopedController;
[controller didInit];
}];
}
void CKComponentScopeRootAnnounceControllerInvalidation(CKComponentScopeRoot *scopeRoot)
{
[scopeRoot enumerateComponentControllersMatchingPredicate:&CKComponentControllerInvalidateEventPredicate block:^(id<CKComponentControllerProtocol> scopedController) {
CKComponentController *controller = (CKComponentController *)scopedController;
[controller invalidateController];
}];
}