iOS 替换navigationController 的push方法,使页面无痕获取上页面的pageCode
给navigationControler 添加一个分类
@implementation UINavigationController (Track)
- (void)track_pushViewController:(UIViewController *)viewController animated:(BOOL)animated
{
if (self.viewControllers.count < 2) {
return;
}
UIViewController *currentVC = self.viewControllers[self.viewControllers.count - 2];
//vc不存在
if (!currentVC || !viewController) {
#if DEBUG
NSAssert(NO, @"currentVC or pushVC not exsit");
#endif
return;
}
//vc不支持VVSnowplowTrackParams协议
if (![currentVC conformsToProtocol:@protocol(VVSnowplowTrackParams)] ||
![viewController conformsToProtocol:@protocol(VVSnowplowTrackParams)]) {
NSLog(@"not conform VVSnowplowTrackParams protocol. Current: %@, Push: %@.", currentVC, viewController);
return;
}
//设置来源页面
[(id <VVSnowplowTrackParams>)viewController setSpReferrer:[(id <VVSnowplowTrackParams>)currentVC spUri]];
}
交换push 方法
(void)vv_swizzleMethod
{
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
Class class = [UINavigationController class];
SEL originSelector = @selector(pushViewController:animated:);
SEL swizzledSelector = @selector(new_pushViewController:animated:);
[NSObject exchangeInstanceMethod:class originalSel:originSelector swizzledSel:swizzledSelector];
});
}
- (void)new_pushViewController:(UIViewController *)viewController animated:(BOOL)animated
{
[self new_pushViewController:viewController animated:animated];
[self track_pushViewController:viewController animated:animated];
}
这篇好文章是转载于:学新通技术网
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通技术网
- 本文地址: /boutique/detail/tanhifkjbb
系列文章
更多
同类精品
更多
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
TikTok加速器哪个好免费的TK加速器推荐
TK小达人 10-01 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
excel图片置于文字下方的方法
PHP中文网 06-27 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
微信提示登录环境异常是什么意思原因
PHP中文网 04-09 -
微信运动停用后别人还能看到步数吗
PHP中文网 07-22 -
微信人名旁边有个图标有什么用
PHP中文网 03-11