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

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

大致思路是,新建一个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];

}


©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1、设计模式是什么? 你知道哪些设计模式,并简要叙述? 设计模式是一种编码经验,就是用比较成熟的逻辑去处理某一种类...
    青春_追逐阅读 823评论 0 7
  • 面试题参考1 : 面试题[http://www.cocoachina.com/ios/20150803/12872...
    江河_ios阅读 1,773评论 0 4
  • 转至元数据结尾创建: 董潇伟,最新修改于: 十二月 23, 2016 转至元数据起始第一章:isa和Class一....
    40c0490e5268阅读 1,858评论 0 9
  • 设计模式是什么? 你知道哪些设计模式,并简要叙述? 设计模式是一种编码经验,就是用比较成熟的逻辑去处理某一种类型的...
    iOS菜鸟大大阅读 763评论 0 1
  • 那几天平潭的风很大,吹的我不知所措。 第二天早上,我们早早洗漱完毕,集合起来去平潭福利院。福利院位...
    多重人格1101阅读 479评论 0 1