我解決可能是最有圖的幫助說明了問題:我工作的一個應用程序最佳實踐層次結構
|---| |---|
| | | |
| B | --> | C |
| | | |
|---| |---|
^ |
| v
|---| |---|
| | | |
| A | --> | D |
| | | |
|---| |---|
其中一個導航控制器, A
呈現給用戶。它包含一個集合視圖。用戶可以點擊集合中的條目,並將D
推入導航堆棧,或者點擊按鈕在集合中創建新條目。這導致模態地呈現另一個導航控制器B
。作爲創建條目的一部分,用戶導航至推入B
的導航堆棧的C
。一旦用戶配置了條目,我想要關閉模態呈現的控制器並直接轉至D
以向用戶顯示新創建的條目。用戶不應該看到A
到D
的轉換。
如果我的解釋相當缺乏,上述內容與標準日曆應用程序中的流程非常相似:如果您在月視圖中並創建新事件,它會以模態方式顯示控制器,直接進入日視圖。
C
可以撥打dismissViewControllerAnimated:completion:
返回A
。冒着問一個主觀問題的風險,在C
自行解散之前是否有導致D
被推到A
的導航棧上的最佳做法?我可以通過B
將一個代表傳遞給C
,但是傳遞這樣的東西感覺有點笨拙。我也考慮過使用通知,但這也不正確。也許故事板在這裏會有所幫助,但是如果存在這樣的事情,我更喜歡一種乾淨的基於代碼的方法。