iOS 中push和pop到底系统做了些什么事

 我来答
无畏口碑7
2016-05-22 · TA获得超过1118个赞
知道小有建树答主
回答量:1282
采纳率:63%
帮助的人:429万
展开全部
简而言之,push就是压栈,pop就是出栈!
[self.navigationController pushViewController:VC animated:YES];

那么苹果为实现这一句话具体配野漏做了些什么事呢?
[self addChildViewController:VC]; // 1
VC.view.frame = [self frameForContentController]; // 2
[self.view addSubview:VC.view]; // 3
[VC didMoveToParentViewController:self]; // 4

第一步,NavigationController用addChildViewController这个函数把VC这个controller添加作培烂为自己的子视图控制器。
第二步,设置VC这个controller里的根view的frame。
第三步,把VC.view添加到Navigationcontroller.view上。
第四步,用didMoveToParentViewController这个方法通知已经push完毕。
既然有push,那么就会有pop
[self.navigationController popViewControllerAnimated:YES];

苹果做的事:
[VC willMoveToParentViewController:nil];   // 1
[VC.view removeFromSuperview];    // 2
[VC removeFromParentViewController]; // 3

第一步,用willMoveToParentViewController这个方法,并把参数设置为nil,通知VC这个Controller即将被移除父视图控制器。
第二步,把VC.view移除出父视图控制器的view。
第三步,然后用removeFromParentViewcontroller这个方法把VC彻底移除。脊祥
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式