我正在尝试从nib文件中实例化一个视图控制器,如下所示:
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
对此有任何想法。欢迎所有评论。
答案 0 :(得分:0)
您没有名为ViewController
的nib文件。
你有一个故事板。故事板被编译为一组nib文件,但您无法直接访问这些nib文件。相反,您需要为视图控制器提供一个Storyboard ID。然后,您可以要求故事板实例化该视图控制器。
我们假设你使用“GetData”作为故事板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
的根视图控制器时,我不确定按名称实例化视图控制器是否有意义。你确定要在这里实例化一个新的视图控制器吗?