2012-11-06 216 views
6

一年前我在舊版本的Xcode上編寫了一些iOS應用程序。我剛剛開始一個新項目,並在最新的Xcode中發現了故事板功能。事實證明,這對於我正在編寫的應用程序是完美的,因爲它由〜30個相互關聯的屏幕組成。如何避免Modal Storyboard無限循環

我的問題是,我如何構建我的故事板,並讓我的應用程序沿着通過我的屏幕循環路徑。我見過很多examples,它們將屏幕1簡化爲屏幕2,然後使用模式選項將屏幕2屏幕1。這很明顯,但是當我調試這樣構建的應用程序時,它爲每個執行的segue實例化每個屏幕(視圖控制器)的新實例。在下圖(道歉,我畫了一個很好的圖片,但由於我的新手狀態,無法發佈),我如何從屏幕1到屏幕2到屏幕3,並返回到原始屏幕1,而不創建一個新的實例?

// Screen 1 --> Screen 2 --> Screen3 
// ^      | 
//  |       | 
//  +-------------------------+ 

回答

3

好的,自從提出這個問題以來,我已經做了相當多的研究,我相信我可以爲這個問題提供一個合理的答案。總之,我在這個問題中提出的方法與故事板和賽段實際工作的方式不一致。 Segges always實例化一個新的目標視圖控制器/視圖實例。這意味着,當我們從屏幕3返回到屏幕1時,我們將轉到屏幕1的新實例,而不是原始實例。爲了解決這個問題,我將以不同的方式實施故事板。

// Screen 1 --> Screen 2 
//  | 
//  +------> Screen 3 

我會然後confiure屏幕1以監聽來自屏幕2和3

一個「下一屏幕」信息(通過委託/協議)當在屏幕1的用戶對屏幕2選擇該按鈕,故事板和segue將處理屏幕2的模式實例。當屏幕2上的用戶選擇「下一屏幕」按鈕而不是屏幕3時,我將關閉屏幕2並且通過新的屏幕1啓動屏幕3屏幕1 - >屏幕3繼續。

這種方法的優點是允許屏幕1成爲循環中所有後續屏幕的主控制器(在我的例子中,我有10個屏幕/循環中的練習)。唯一的缺點是故事板不能很好地反映屏幕的流動。

我希望能幫助別人嘗試在他們的iOS項目中實現同樣的目標。