本文參考:http://blog.csdn.net/weisubao/article/details/39640303 ,在此感謝
//可以手動設置pop出棧,相當于刪除這個頁面,跳轉到其他頁面
//popViewControllerAnimated就是彈出,因為彈出只能彈出最上面的棧頂的那個,所以可以不用指定參數
//popToRootViewControllerAnimated-就是直接跳轉到根視圖控制圖,如果只有兩層,那么和popViewControllerAnimated并無區別,如果有很多層,那么其實就是相當于不僅把自己pop出去,還把所有除了根視圖控制圖之外的所有視圖控制器都pop出去了,所以就相當于跳轉到根視圖控制器了
//popToViewController-就是跳轉到指定的視圖控制器xxx,這個xxx一定要在這個棧里面,即一定是在我們當前這個視圖控制器的下面的,所以跳轉也就是把自己和在xxx上面的所有視圖控制器都pop出去,然后相當于直接跳轉到xxx
//此處重點是這個xxx怎么獲取,按照一般理解是用xxx再初始化一個視圖控制器對象yyy,然后把這個對象yyy作為popToViewController參數
//但事實是,yyy是新初始化的,不在棧中,當然和在棧中的xxx初始化的那個對象也不是同一個對象,所以會報錯(因為在棧中找不到啊)
//所以,self.navigationController.viewControllers出場,viewControllers是個數組,儲存的時導航控制器棧中所有的視圖控制器,最先push進去的時0,以此類推,最上面的肯定是數組的最后一個
//所以,那個xxx之前初始化的對象,可以用[self.navigationController.viewControllers objectAtIndex:0]表示,此處0就是根視圖控制器 ? [self.navigationController popToViewController:[self.navigationController.viewControllers objectAtIndex:0] animated:YES];
//所以,只要拿到navigationController,貌似能做很多事情