2015-08-03 60 views
1

道歉,如果這有點不清楚 - 當談到iOS編程時,我是noob。這裏是場景:ios:根據在前一個視圖中使用的segue,不同的segue到另一個視圖

我有一個LogInView,一個CategoryView,一個CheckerView,一個WalkthroughView和一個LandingPageView。

用戶開始在LogInView,並根據應用的藍牙狀態,以及用戶是否已被註冊,要麼去:

  • CheckerView(註冊,藍牙關閉)
  • LandingPageView(註冊,藍牙開)
  • 類別查看(未註冊)

如果用戶點擊類別查看,這取決於他的藍牙連接的狀態,他去eithe R(這一部分,到目前爲止,工作好):

  • WalkthroughView(藍牙)
  • CheckerView(藍牙關閉)

美中不足的是,類別查看將總是經過WalkthroughView,不管藍牙是否打開。所以,這裏就是我的故事板的樣子:

A right hot mess

右熱的一塌糊塗,我知道了。由於兩個LogInView和類別查看可以在某些時候,進入CheckerView,我需要一種方法來檢查該塞格斯的使用,使得:

  • CheckerView總會進入LandingView如果以前的觀點是LogInView,和
  • 如果以前的視圖是CategoryView,它將始終進入WalkthroughView。

我隱約意識到prepareForSegue功能的,但我不知道又如何使用它,也沒有把它放在哪裏(從以前的頁面或接收頁面上?)

有什麼建議麼?謝謝。

+0

您是否閱讀過UIViewController類參考中prepareForSegue的文檔?你看過關於使用segues的任何教程嗎?您可以使用prepareForSegue輕鬆地在Checker View上設置一個布爾值,如果它來自登錄視圖。 – Paulw11

+0

另一個想法是測試註冊/未註冊,並基於該結果,使用'performSegueWithIdentifier'來確定您將使用哪個segue。然後測試藍牙啓用/禁用。在'prepareForSegue'中,你將設置你需要在下一個VC上設置的內容。 http://stackoverflow.com/questions/7864371/how-to-pass-prepareforsegue-an-object – Adrian

回答

2

這聽起來像你正在測試條件,以確定你會繼續下去。如果是這種情況,也許你可以測試條件(註冊/未註冊,藍牙啓用/禁用)。根據各種條件,您可以使用performSegueWithIdentifier來確定下一步要去哪裏,並使用segue標識符在prepareForSegue中設置下一個ViewController,而不是「回顧」以查看您來自哪裏。

1

我的標準建議是,一旦應用程序狀態變得複雜,它應該被移出視圖控制器並移入實際的數據模型對象。

數據模型可以是您創建的自定義類(首選可伸縮性)。或者,在沒有大量信息共享的情況下,您可以將其放入NSUserDefaults並在需要時從那裏閱讀。

相關問題