2014-10-26 44 views
0

我有一些邏輯,在應用程序啓動時,下載應在結帳過程中顯示的幾個連續屏幕。我遇到的問題是ViewController可以爲不同的用戶重新訂購。我不確定如何讓一個控制器調用另一個控制器。應該在每個控制器中使用prepareForSegue完成所有這些步驟嗎?爲iOS加載動態/順序視圖/控制器的正確設計模式是什麼?

例如我已經我的根控制器A,它使一個web服務調用和返回3個屏幕以特定的順序來顯示:B,C,d

然而,其他用戶可能只得到篩選d,C以該順序。屏幕/控制器已經存在於應用程序中,並進行編碼,我只是試圖找出以各種命令調用它們的最佳方式?

+0

這個問題太含糊。你需要更詳細地解釋你想要做什麼。 – rdelmar 2014-10-26 20:01:12

+0

什麼是「屏幕」? ViewControllers可以在[多種](http://goo.gl/kHxOoB)[of](http://goo.gl/KvrNtR)[途徑](http://goo.gl/dT22kQ)中顯示其他視圖控制器。 。可能會出現這種情況,您應該考慮以編程方式執行而不是使用segues。 – 2014-10-26 20:06:15

+0

謝謝@rdelmar。一個例子通常有幫助。 – Kamilski81 2014-10-27 01:01:48

回答

0

根據您的問題,您需要動態顯示視圖控制器並以不同順序向不同用戶顯示視圖控制器。

  1. 我建議你不要使用塞格斯和顯示viewcontrollers 編程。這會給你靈活性。例如,在iPhone中,您可能必須推送新的viewcontroller,而在iPad中,您可能必須將其顯示爲彈出式窗口。

  2. 我建議你看看命令設計模式。解析服務響應後,您可以調用create命令向您顯示視圖控制器,將它們保存在隊列中(Invoker),然後執行命令向用戶顯示視圖控制器。在這裏,你不需要一個完整的命令模式。你只需要維護一個隊列並保持上下文。您也可以考慮使用前後顯示(視圖控制器)方法。這將有助於您擴展代碼。你不需要馬上讓他們(前/後),但可以相應地規劃你的設計。 對於前/後的方法,你可以看看模板設計模式。同樣,你不需要一個完整的模板。

+0

謝謝。在iOS方面,你會把所有的控制器都放到NavController中,然後使用它們嗎?我不確定如何實際執行您的建議。 – Kamilski81 2014-10-27 14:29:18

+0

我不會在導航控制器上靜態推送它們,但我會以編程方式進行操作。 [self.navigationController pushViewController:yourViewCotroller animated:YES];如前所述,這實際上是一個命令。 – 2014-10-27 16:12:18

相關問題