2016-08-11 109 views
0

我是iOS開發新手,無法找到答案。何時爲新屏幕創建新的故事板vs View Controller?

什麼時候應該創建新的故事板,何時應該爲新屏幕創建新的視圖控制器?

Launch ScreenMain是兩個不同的故事板。假設Main是登錄屏幕,所以在用戶登錄後,他應該看到一個新的屏幕。我應該使用哪種方法創建該屏幕?

+1

爲什麼不只是添加一個新的場景到故事板?這是可以接受的方式。然後使用segues在它們或導航控制器之間導航。 –

+0

@OwenHartnett好吧,那麼何時創建一個新的故事板?爲什麼LaunchScreen和Main是兩個不同的故事板而不是兩個視圖控制器的故事板? –

+1

故事板描繪了用戶通過應用程序獲取的路徑。大多數應用程序只需要一個故事板。有些情況下,根據用戶的輸入,你需要採取兩條完全不同的路徑,比如說如果你使用的是iPhone而另一條路徑(如果它的大小應該是這樣的話)。另一種情況是當故事板變得如此之大時,將其分解爲更小的內容是有意義的。 –

回答

1

要直接回答您的最後一個問題,請僅爲此使用主要故事板:創建用戶在登錄時將看到的場景。將其作爲第一個顯示的視圖。然後創建另一個場景,即您的登錄屏幕。當您的主屏幕啓動後,請檢查您是否已登錄。如果沒有,它應該以模態方式啓動您的登錄屏幕。

1

您將創建新的視圖控制器,新的故事板是必需的,只有當你的佈局設計是不同的設備(如iPad和iPhone)不同,或者如果你不能處理同樣的故事板

1

設計爲iPhone和iPad自登陸過程有時會涉及多個屏幕(忘記密碼,註冊等),你可以做的是將登錄和主分割爲兩個故事板。

然後,你做它從應用程序的委託證明:在每個故事板

if userLoggedIn() != nil // No user logged in 
{ 
     let storyboard = UIStoryboard(name: "Main", bundle: nil) 
     if let rootVC : UIViewController = storyboard.instantiateInitialViewController(){ 
      window?.rootViewController = rootVC 
     } 
} else{ 
     let storyboard = UIStoryboard(name: "Login", bundle: nil) 
     if let rootVC : UIViewController = storyboard.instantiateInitialViewController(){ 
      window?.rootViewController = rootVC 
     } 
    } 
window?.makeKeyAndVisible() 

設置rootViewControllers和你設置。

這也將使主要故事板最小化,在許多情況下,故事板可以變得巨大,並且可以在所有地方使用賽普拉斯和VC,並使其變得越來越難以管理。

2

對於大多數簡單的應用程序,只需一個Storyboard即可滿足您的應用程序UI。是的,如果您選擇遵循現代最佳做法,還有一個Launch storyboard。總共2個。在許多情況下,這就是你所需要的。

但是,「大」故事板可能會在幾個方面變得笨拙。首先,它是一個巨大的XML文件,因此有很多事情的故事板在Mac上打開可能會比較慢。無論你是否感到困擾都取決於你。另外,如果您在團隊中工作而不是獨奏,故事板有時難以跟蹤何時合併。所以,如果你想把你的應用分成多個故事板,你可以,而且iOS 9有一些功能可以幫助你比以往更容易(故事板參考)。

對於我目前的應用程序,我有3個故事板,每個故事板都按邏輯圍繞功能組織。一個是我們的多屏幕登機。另一個用於主應用程序UI。第三個是我們的設置屏幕,它具有深層次的可導航選項。將這些分解成單獨的故事板是有意義的,因爲它們非常獨特。

您可能會感到困惑,因爲如果您在Twitter或Web上四處搜索,則可能會看到一些開發人員在每個視圖控制器中使用一個Storyboard。那些人是堅果,不聽他們。當你這樣做的時候,你錯過了許多重要的故事板功能,當然最大的故事板是殘酷的。

相關問題