呼叫

2014-11-02 234 views
0

「動畫」當我嘗試去到另一個故事板獲得額外的參數編程我用呼叫

//Pop user to next screen 
let storyboard = UIStoryboard(name: "HomeViewController", bundle: nil); 
let vc = storyboard.instantiateViewControllerWithIdentifier("home") as UIViewController; 
self.presentViewController(vc, animated: true, completion: nil); 

但是,這並不表明在接下來的故事板導航控制器。所以,我沒有

HomeViewController.presentViewController(vc, animated: true, completion: nil); 

和所有的拋出是

呼叫

任何想法 '動畫'

額外的參數?

回答

2

關於你的第一個問題,一對夫婦的意見:

  • 對於第一個問題,您可能希望確保vc不是nil(例如,隨着home故事板ID的一幕被發現) :

    if let vc = storyboard.instantiateViewControllerWithIdentifier("home") as? UIViewController { 
        presentViewController(vc, animated: true, completion: nil) 
    } else { 
        println("home not found") 
    } 
    
  • 我建議你仔細檢查爲「故事板ID」拼寫和大小寫的「家」的場景。

  • 順便說一句,如果你選中了「在初始視圖控制器」複選框,在IB的第一個場景在你的第二個故事板,那麼你可以做交替:

    let vc = storyboard.instantiateInitialViewController() 
    

    您可以直觀地確認此設置因爲現場將有一個小「初始賽格瑞」箭頭指向到它從左邊:

    initial view controller

  • 如果你正在做一個presentViewController到目的地場景本身就嵌入在導航控制器中,那麼你應該提供那個導航控制器(即爲導航控制器的場景提供「故事板ID」或將其指定爲「初始視圖控制器」),而不是嵌入到導航控制器中的場景。

關於你提到的第二個錯誤,那是因爲你調用一個實例方法presentViewController,但引用的是大概一個類名,HomeViewController,而不是一個實例。這個語法根本沒有任何意義。

以前的語法與self.presentViewController(...)可能是對的,但更有可能故事板或場景沒有找到,或者是因爲一個或另一個的名稱(很可能是場景的「故事板ID」)或因爲記分牌不是包含在捆綁包中(儘管我認爲這會產生不同的錯誤)。

+0

好吧,如果我將標籤拖入下一個視圖控制器,我可以看到它。這只是沒有顯示的導航控制器。 – user302975 2014-11-02 02:46:43

+0

您必須爲該導航控制器提供其自己的獨特故事板ID,並在代碼中引用_that_(或者,對於導航控制器的場景,請檢查「是初始視圖控制器」複選框,然後使用「instantiateInitialViewController」語法)。 – Rob 2014-11-02 02:48:51

+0

這就是我正在使用的第二行。我已經在界面生成器中將故事板ID設置爲'home' – user302975 2014-11-02 02:52:01