2014-09-19 76 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。你确定你想在这里实例化一个新的视图控制器吗?

相关问题