2015-10-17 54 views
3

我正在嘗試爲我的應用程序的註冊過程創建控制器體系結構。下面是當前狀態的圖像:爲什麼我的放鬆繼續回到太遠?

Controller Architecture

該應用程序開始於登錄頁面的第一時間,如果用戶點擊「註冊」,導航控制器經由模態呈現self.presentViewController。然後導航控制器通過一個視圖控制器,然後推送到第二個視圖控制器。在此第二個視圖控制器上,用戶必須先按下「Go」才能以模態方式導航到請求附加信息的視圖控制器,然後再繼續註冊過程。一旦用戶在這個模態呈現的控制器上輸入了額外的信息,用戶按下「返回」以通過展開順序返回到第二視圖控制器。

但是,當按下此按鈕時,展開順序將返回到第二個視圖控制器,但會立即返回到「登錄」頁面。即使展開函數嵌套在第二個視圖控制器中,看上去unwind segue也會彈出所有模態呈現的視圖。

發生了什麼事,解開第二個註冊頁面的解決方案是什麼?

+0

只是在我嘗試重現此操作之前進行檢查:所以展開函數僅出現在第二頁視圖控制器代碼中? - 這是iOS 9嗎?在iOS 9中,unwind segues的行爲發生了很大變化,因此知道這一點很重要。 – matt

+0

是的,它只出現在第二頁視圖,這是iOS 9. –

回答

8

我有同樣的問題,它通常是由以下原因造成:

  1. 使用過時賽格瑞
  2. 調用viewController.dismissViewControllerAnimated用於放鬆身心的@IBAction方法內。
  3. 將@IBAction用於在錯誤的控制器中展開。 @IBAction應該在你想放鬆的控制器中。

步驟放鬆身心的賽格瑞

  1. 創建SecondSignupController的@IBAction方法,這種方法將在開卷被調用。此方法應以UIStoryboardSegue作爲參數示例 - > @IBAction func onUnwindFromModalPage(segue:UIStoryboardSegue){}。此方法的主要目的是傳回數據,否則您可以將其保留爲空。

  2. Control-Drag from Go-Back button to exit symbol in the Modally Presented Controller in storyboard。退出符號是選擇控制器時控制器頂部的最後一個符號。這將向您展示您可以選擇放鬆的@IBActions列表。選擇您在SecondSignUpController中創建的方法。

+0

是的,OP在兩個階段看到這一事實讓我懷疑他是否有其他代碼導致額外的展開。 – matt

+0

@wakeupsumo不幸的是,我遵循創建segue的確切步驟。我敢肯定,你提出的任何可能的原因都不適用於我的情況。 –

+0

當我刪除用於在第二個視圖控制器中展開的@IBAction時,按回退按鈕不會執行任何操作。它只是停留在模態控制器上。 –

相關問題