2016-06-07 119 views
0

我有一個iOS應用程序,它包含一個「Overview」場景作爲初始視圖控制器,一個「EntryList」場景和一個「NewEntry」場景。它們由一個導航控制器組成,並按照所提到的順序連接,使用show(push)segues。 NewEntry視圖控制器具有展開到EntryList控制器的「Save」和「Cancel」菜單欄項目。快速操作後處理對話

我在使用performSegueWithIdentifier直接跳轉到NewEntry控制器的應用程序圖標上添加了一個快速操作,該快捷操作從導航控制器到NewEntry控制器。

當應用程序暫停運行後使用快速操作時,無論先前的內容如何,​​新的NewEntry實例都會被推入導航堆棧。所以,甚至可以堆疊多個NewEntry實例。在這種情況下,任何剩餘的舊的NewEntry實例都可能被丟棄。

在應用程序終止後使用Quick Action時,總是會首先創建一個新的Overview實例(因爲是初始導航控制器之後的第一個實際VC,我想呢?),然後NewEntry被推送。在這種情況下沒有EntryList場景。

當按下取消或保存項目時,NewEntry場景將被丟棄並採取適當的措施,使用戶處於應用程序之前的狀態,否則將在用戶處於應用程序狀態。

我的問題:

  • 什麼是正確的行爲的應用程序應該執行?
  • 我該如何實現該行爲?
  • 什麼是實現所有段落的「最佳實踐」,尤其是當NewEntry場景不一定在EntryList場景之後被推送時?

我想避開「UI麪條代碼」,導航堆棧黑客等

回答

0

所以,有些審判+錯誤之後,我目前的解決方案是嵌入NewEntry現場變成自己的導航控制器。這是來自EntryList和Quick Action(源自主導航控制器)的「Present Modally」節點的目標。 「保存」和「取消」按鈕不會放鬆,而是內部連接到執行必要工作的操作,並最終致電dismissViewControllerAnimated()

請評論,如果這是正確的方式,或者如果你有更好的解決方案。