2014-09-19 28 views
0

我試圖實例從筆尖文件視圖控制器類似如下:不能創建一個視圖控制器,快捷,IOS

class TNAChallengerHandler:ChallengeHandler { 

    var controller : ViewController 

    // Default initializer 
    init(realm iRealm: String, controller iController : ViewController) { 
     println("Default initializers") 
     self.controller = iController; 
     super.init(realm: iRealm) 
    } 

    // Convience initializer 
    convenience init() { 
     println("Convience initializers") 
     let vc = ViewController(nibName: "ViewController", bundle: nil) 

     self.init(realm: "SingleStepAuthRealm", controller:vc) 
    } 

執行的代碼和我得到

iOS_SingleBasedAdapterAuthentication[40828:5708548] *** Terminating app due to uncaught 
exception 'NSInternalInconsistencyException', reason: 'Could not load NIB in bundle: 'NSBundle </Users/tonytran/Library/Developer/CoreSimulator/Devices/6B797313-635F-4ABD-B3C6-A1D9DF3F1E85/ 
data/Containers/Bundle/Application/FDC3FD2B-6E26-4654-AC0F-ED3F44DDC5F6/iOS_SingleBasedAdapterAuthentication.app> (loaded)' with name 'ViewController'' 

我仔細檢查故事板,該類的自定義類已經更改爲ViewController,如下所示,名稱與ViewController.swift相同

enter image description here

對此有任何想法。所有評論都歡迎在這裏。

+3

目前尚不清楚你想要做什麼。 ViewController將在故事板自動實例化,因爲它是導航控制器的根視圖控制器。你不應該在故事板上使用initWithNibName:bundle。 – rdelmar 2014-09-19 19:44:32

回答

0

您沒有名爲ViewController的筆尖文件。

你有一個故事板。故事板被編譯成一組nib文件,但不直接訪問這些nib文件。相反,你需要給你的視圖控制器一個Storyboard ID。然後,您可以要求故事板實例化該視圖控制器。

比方說,你用「的GetData」作爲故事板ID:

storyboard ID

,我以爲你的故事板被命名爲Main.storyboard。然後,你可以實例化這樣的視圖控制器:

convenience init() { 
    println("Convenience initializers") 
    let storyboard = UIStoryboard(name: "Main", bundle: nil) 
    let vc = storyboard.instantiateViewControllerWithIdentifier("GetData") 
    self.init(realm: "SingleStepAuthRealm", controller: vc) 
} 

這就是說,我不知道它使一個很有意義的名字創建一個視圖控制器時視圖控制器也被用來作爲根視圖控制器的UINavigationController。你確定你想在這裏實例化一個新的視圖控制器嗎?

相關問題