2013-02-13 32 views
0

我有一個應用程序,我正在努力,有一個主屏幕與兩個按鈕。一個人會帶你到一個GPS(地圖)的視圖,然後一旦有(新的VC)它可以選擇設置該位置或提出一個列表(tableview,另一個VC)的所有位置已標記。確定viewcontroller是否已經在堆棧上,如果是這樣,去或去掉它

在列表VC中,如果您單擊表格單元格,它將調出帶有地圖的VC。問題是,這會在堆棧中添加相同的VC bak。如果用戶點擊取消按鈕,他們會返回到屏幕,然後取消返回另一個屏幕等...直到回到主。

我知道我可以做[self.navigationController popToRootViewControllerAnimated:YES];回到根部,但這並不總是我想要的。另外,我知道我可以這樣做:[[[presentViewController] presentingViewController] dismissModalViewControllerAnimated:YES]; [[[]] [] [] [] [] [] [] [] [

我想我的意思是我想「重複使用」GPS地圖視圖,所以我可以從其他VC調用它,所以這就是爲什麼我沒有用「傳回」來調用VC。所以,當按鈕被按下並且要呈現新的VC時,是否可以在顯示新的VC之後解散先前的VC?這樣,當前風險投資的解僱將讓我回到我需要的地方。

我希望有道理,而且這個問題不屬於「不是真正的問題」類別。

任何幫助或更好的建議,非常感謝。 THX

地理...

回答

1

如果你想跳回水平的一定數量的導航控制器的VC堆棧,你可能會想使用它的方法popToViewController:animated:。要確定某個視圖控制器是否位於該堆棧上,請查看導航控制器的屬性viewControllers。不過要小心,因爲這種跳躍是一種相當不標準的UI行爲(即使有API),這可能會讓用戶感到困惑。

此外,使用導航控制器並以模態方式呈現並不是管理多個視圖控制器的唯一方法 - 您可以隨時自行設置窗口的rootViewController(並使用UIView動畫更改動畫效果),甚至包裝您的自定義過渡類型在自定義UIStoryboardSegue如果你喜歡。

0

您可以在表視圖中放置一個委託。因此,當一個單元格被按下時,信息被傳遞給VC中的委託方法,該方法將關閉表視圖並使用新信息重新加載自己。你將不得不在VC中實現刷新方法。