iOS中的push和pop是一个很经常使用的视图切换方法,他们是成对出现的,ide
简而言之,push就是压栈,pop就是出栈!函数
[self.navigationController pushViewController:VC animated:YES];
那么苹果为实现这一句话具体作了些什么事呢?spa
[self addChildViewController:VC]; // 1
VC.view.frame = [self frameForContentController]; // 2
[self.view addSubview:VC.view]; // 3
[VC didMoveToParentViewController:self]; // 4
既然有push,那么就会有popcode
[self.navigationController popViewControllerAnimated:YES];
苹果作的事:blog
[VC willMoveToParentViewController:nil]; // 1
[VC.view removeFromSuperview]; // 2
[VC removeFromParentViewController]; // 3
下面贴出RESideMenu的源码里面它作的处理(实际上是一个道理)rem
上面原理部分参考的是彦祖的一篇博客的一部份内容源码