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
上面原理部分參考的是彥祖的一篇博客的一部份內容源碼