2015-01-10 62 views
0

根據用戶的操作,我需要將用戶從一個view controller移動到另一個,具體取決於他們是按時間完成任務還是按按鈕完成任務。兩者都調用相同的方法completeSession()以編程方式在Swift中的視圖控制器之間移動用戶

我進入故事板併爲每個屏幕添加了一個與視圖控制器類相同的故事板ID。因此,對於這個問題,class JournalViewControllerJournalViewController故事板ID,同樣與SecondViewController

func completeSession() -> Void { 
    ... some other stuff, unrelated ... 

    let journalViewController = self.storyboard?.instantiateViewControllerWithIdentifier("JournalViewController") as ViewController 
    self.presentViewController(journalViewController, animated: true, completion: nil) 
} 

這不是工作,造成我的應用程序有reason: Storyboard <UIStoryboard> doesn't contain a view controller with identifier JournalViewController崩潰,但JournalViewController.swift包含:

class JournalViewController: UIViewController, UITextView Delegate {

任何想法如何從SecondViewControllerJournalViewController沒有錯誤?

+1

故事板標識符不是類名稱。你有一個視圖控制器在你的故事板中有自定義類'JournalViewController'嗎?如果是,則使用該視圖控制器的Storyboard ID。 –

+0

當我打開右面板並轉到身份檢查員時,該班說班級JournalViewController –

+0

原諒我的無知,希望能幫助我理解故事板標識符和各自視圖控制器的類名之間的區別。 swift文件,它們不是一回事嗎? –

回答

0

我想你也許可以在這裏檢查後: What is a StoryBoard ID and how can i use this?

所以,你要明白你怎麼可以用你的顯卡連接你的代碼。在故事板出來之前,我們用NSBundle加載圖形。所以,這裏同樣的事情是你如何加載你的圖形。因爲故事板不僅僅包含一個屏幕。所以,你會有一些東西來識別它們。這就是我們需要的原因。

+0

好的,明白了。所以我已經完成了。每個屏幕都有一個故事板ID,與相應的視圖控制器類名稱的名稱相同。我會更新原始問題,以便爲此提供答案 –

+1

不是所有的屏幕都必須提供一個名稱。你只需要給他們一個名字,如果你需要使用** UIStoryboard **實例化它們 –

0

要回答我自己的問題,此代碼工作,缺少的片段進入故事板並給每個項目一個故事板ID。

instantiateViewControllerWithIdentifier依靠您的故事板ID成功抓取它,以便應用程序知道將用戶推送到哪裏。

我希望有幫助。

let journalViewController = self.storyboard?.instantiateViewControllerWithIdentifier("JournalViewController") as JournalViewController 
self.presentViewController(journalViewController, animated: true, completion: nil) 
相關問題