BBAContaninerTransitionEventManager.h 1.6 KB
//
//  BBAContaninerTransitionEventManager.h
//  BBAUIKit
//
//  Created by liuchengqing on 2018/9/25.
//  Copyright © 2018 Baidu. All rights reserved.
//

#import <UIKit/UIKit.h>

// 容器转场事件派发, 由于事件频繁统一派发(代替Notification), 便于后续监控与拓展
// 不使用后需及时remove, 避免循环引用
/*
 1.BBATabController 切换tab
 2.BBANavigationController push/pop
 3.UIViewController present/dismiss
 */

typedef NS_ENUM(NSUInteger, BBATransitionType) {
    BBATransitionTypeNone,
    BBATransitionTypePushOrPop, //暂时无法区分
    BBATransitionTypePresentMode,
    BBATransitionTypeDismissMode,
    BBATransitionTypeSelectTab,
};

@protocol BBATransitionEventProtocol <NSObject>
- (void)containerWillShowViewController:(UIViewController *)vc baseViewController:(UIViewController *)baseVC transitionType:(BBATransitionType)type;
- (void)containerDidShowViewController:(UIViewController *)vc baseViewController:(UIViewController *)baseVC transitionType:(BBATransitionType)type;
@end

// 分发手百框架容器转场事件 tab & nav
@interface BBAContaninerTransitionEventManager : NSObject

@property (nonatomic, assign) BBATransitionType transitionType;
@property (nonatomic, weak) UIViewController *baseViewController;

+ (instancetype)shareInstance;

- (void)addEventRegister:(id<BBATransitionEventProtocol>)eventRegitster;

- (void)removeEventRegister:(id<BBATransitionEventProtocol>)eventRegitster;

- (void)actionWillShowViewController:(UIViewController *)vc;

- (void)actionDidShowViewController:(UIViewController *)vc;

- (void)setDelayTransitionDispatcher:(BOOL)needDelay;

@end