UINavigationController是iOS編程中的一個view controller的容器,通過棧管理viewControllers,每一次push操作都將在棧頂添加一個view controller,然后通過pop將該棧最頂端的controller移除。
我們在工程中,通常會在controller中執(zhí)行
// 移除棧頂controller。
[self.navigationController popViewControllerAnimated:NO];
假設現在有UIViewController的子類對象,A、B、C、D。
//將A控制器設置為根控制器
UINavigationController *myFirstCtrl = [[UINavigationController alloc] initWithRootViewController:myFirstCtrl];
self.window.rootViewController = m_firstCtrl;
//在A控制器中,push B控制器
[self.navigationController pushViewController:B animated:NO];
//在B控制器中,push C控制器
[self.navigationController pushViewController:B animated:NO];
//在C控制器中,push D控制器
[self.navigationController pushViewController:B animated:NO];
````
則此時A控制器的棧中,有四個元素,我們認為在B、C、D中都沒有pop操作,此時,在A控制器中,執(zhí)行
[self.navigationController popViewControllerAnimated:NO];
則是將D控制器從棧中移除,并非我們理解的將A控制器本身移除。同樣,再次執(zhí)行時,是將C控制器移除。如果想退到A,則執(zhí)行:
[self.navigationController popToViewController:A animated:YES];