這裏的彈出背面有兩個視圖控制器的技術,它具有當前視圖控制器及其navigationController屬性的你,只要你做的第一個彈出走開的一個類似的問題:
// pop back 2 controllers on the stack to the setup screen
//
// locally store the navigation controller since
// self.navigationController will be nil once we are popped
//
UINavigationController *navController = self.navigationController;
// retain ourselves so that the controller will still exist once it's popped off
//
[[self retain] autorelease];
// Pop back 2 controllers to the setup screen
//
[navController popViewControllerAnimated:NO];
[navController popViewControllerAnimated:YES];
或者,
setViewControllers:動畫:在視圖控制器的導航控制器堆棧可以直接「當事人」取代 目前導航控制器管理 與的視圖控制器指定項目。
- (無效)setViewControllers:(NSArray的*)動畫viewControllers:(BOOL)動畫參數 viewControllers的視圖控制器 到堆疊放置。該陣列中控制器 的前後順序 代表導航堆棧中控制器 的新的 自下而上的順序。因此,添加到陣列的最後一項變爲 導航堆棧的頂部項目。 動畫如果是,則動畫推動 或彈出頂視圖控制器。 如果否,請在沒有任何動畫的情況下更換視圖控制器 。討論您可以使用此方法更新 或 替換當前視圖控制器 堆棧,而無需明確推送或彈出每個 控制器。此外, 此方法允許您更新控制器組 而不激活 更改,當您想要將導航控制器返回 以前的狀態時,此更改可能適用於啓動時間 。
如果動畫被啓用,該方法 決定過渡的這類型 進行基於項目陣列中的最後一個項目 是否已經在 導航堆棧。如果視圖 控制器當前處於堆棧中,但不是最上面的項目,則此 方法使用彈出轉換;如果視圖 控制器當前處於堆棧中,如果它是 最上面的項目,則不執行轉換 。如果視圖控制器 不在堆棧上,則此方法使用 推送轉換。只執行一個轉換 ,但是當轉換 完成時, 堆棧的全部內容將被替換爲新視圖 控制器。例如,如果 控制器A,B和C在 堆棧上並且您設置了控制器D,A, 和B,則此方法使用彈出窗口 轉換,並且生成的堆棧 包含控制器D,A和B 。
可用性在以後的iOS 3.0和 。宣佈 UINavigationController.h
因此,直接「消失」視圖控制器導航堆棧下您,在您的視圖控制器的viewDidLoad,你可以這樣做:
NSMutableArray *VCs = [self.navigationController.viewControllers mutableCopy];
[VCs removeObjectAtIndex:[VCs count] - 2];
self.navigationController.viewControllers = VCs;
爲什麼你wan't做到這一點? – 2011-02-13 18:07:06
應用程序的要求。或者,我可以彈出當前的視圖控制器,然後推下一個,但當前視圖將在完成推送之前釋放。 – TigerCoding 2011-02-13 18:10:25