2015-05-21 66 views
0

我是一位經驗豐富的iOS開發人員,但我偶然發現了一個我並不完全確定如何解決的問題。如何從演示文稿堆棧中刪除中間的UIViewController

可以說例如我有3個UIViewControllers,A,B和C分別。 A是根,B呈現在A和C之上,而C呈現在B之上。

使用presentViewController呈現B和C:動畫:完成: 因此演示堆棧看起來像這樣。

[A] - > [B] - > [C]

在我的計劃,我想解僱B和B.只對文檔 dismissViewControllerAnimated:完成:說如果我解僱B,它將要求其A解僱B,然後也解僱C。我不要那個。我想解僱只有B使得A將選擇C作爲其presentedViewController像這樣

[A] - > [C]

這可能嗎?

--------注-------

我知道這似乎更適合於另一個呈現圖案,其中A,B,C將是在一個共同的parentViewController兄弟姐妹。但我可能不會使用它。

presentedViewController/presentingViewController模式就像一個雙向鏈表。但是,由於這些屬性是隻讀的,我不能執行任何節點操作。

+0

好像添加模擬演示動畫將會是解決方案的子視圖 – vichevstefan

+0

爲什麼你需要解僱B?爲什麼不等到你需要解僱C,然後解僱B(這也會解僱C)? – rmaddy

+0

因爲B將不再使用,我不希望它在記憶中停留。 – DerrickHo328

回答

0

您可以使用隱藏導航欄的導航控制器,並推送控制器而不是呈現它們(使用模仿演示文稿的推動和彈出動畫)。 然後使用setViewControllers將AC堆棧替換爲AC堆棧?

+0

他們被呈現,而不是推。這不起作用。 – rmaddy

+0

您在完成之前閱讀該文章。我說「並推送控制器而不是呈現它們(使用模仿演示文稿的推動和彈出式動畫)」 – Gruntcakes

+0

但是,這會產生不需要的後退按鈕,而不是在呈現而不是推送時出現。 – rmaddy