美文网首页
iOS 获取当前页面和上个页面

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

作者: 理论知识很差的小伙子 | 来源:发表于2018-12-19 17:14 被阅读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];

    }

    相关文章

      网友评论

          本文标题:iOS 获取当前页面和上个页面

          本文链接:https://www.haomeiwen.com/subject/pgnjkqtx.html