UINavigationController是iOS編程中的一個view controller的容器蝎土,通過棧管理viewControllers借浊,每一次push操作都將在棧頂添加一個view controller仰坦,然后通過pop將該棧最頂端的controller移除娘赴。
我們在工程中案铺,通常會在controller中執(zhí)行
// 移除棧頂controller。
[self.navigationController popViewControllerAnimated:NO];
假設(shè)現(xiàn)在有UIViewController的子類對象,A、B探遵、C、D妓柜。
//將A控制器設(shè)置為根控制器
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];