iOS 获取当前页面和上个页面

2018-12-19  本文已影响41人  理论知识很差的小伙子

公司最近在做埋点,要获取当前的控制器和上个控制器。自己在做的过程中遇到的一点问题,希望能和大家共勉。

大致思路是,新建一个UIViewController+YQHook.h扩展文件

然后在 AppDelegate中   [UIViewController hookUIViewController];

这里为了兼容到present和push 两种方式

1.push

当前页面viewwilldisapper->当前页面的diddisapper->下个页面的viewdidapper

2.present

当前页面viewwilldisappe->下个页面的viewdidapper->当前页面的diddisapper

总结:为了正确获取当前控制器和上个控制器

在didapper获取当前控制器,

- (void)hook_ViewDidAppear:(BOOL)animated

{

    NSString*appearDetailInfo = [NSStringstringWithFormat:@" %@ - %@",NSStringFromClass([selfclass]),@"didAppear"];

    NSLog(@"%@", appearDetailInfo);

    [DataContainer dataInstance].lastVc=nil;//这里一定注意为空,否则所有页面不能释放 

    if (![self isKindOfClass:[SPAlertController class]]) {

        //第三方特殊处理

         [DataContainer dataInstance].currentVc=self;

    }

    [self hook_ViewDidAppear:animated];

}

-(void)hook_viewWillDisappearMethod:(BOOL)animated{

    NSString*appearDetailInfo = [NSStringstringWithFormat:@" %@ - %@",NSStringFromClass([selfclass]),@"disApper"];

    NSLog(@"%@", appearDetailInfo);

    [DataContainer dataInstance].currentVc=nil;

    if (![self isKindOfClass:[SPAlertController class]]) {

            [DataContainer dataInstance].lastVc=self;

    }

    [self hook_ViewDidAppear:animated];

}

上一篇下一篇

猜你喜欢

热点阅读