我正在尝试使用xib文件推送ViewController的视图。为此,我正在调用我的控制器的初始化程序,它自称为initwithnibname:bundle:
以加载正确的xib文件。问题是我收到以下错误
由于未捕获的异常'NSInternalInconsistencyException'而终止应用程序,原因:'无法在bundle中加载NIB:[...]名称为'BYZ-38-t0r-view-x4c-fw-L1g'
错误中的nib名称与初始化程序调用中提供的nib名称不匹配。
这是我的代码:
ViewController声明/初始化
let connexionViewController = ConnexionViewController()
self.view.addSubview(connexionViewController.view) // Exception thrown on this line
ViewController代码
import Foundation
import UIKit
class ConnexionViewController: UIViewController {
@IBOutlet var validateButton: UIButton!
@IBOutlet var usernameTextField: UITextField!
required init(coder: NSCoder) {
super.init(coder: coder)
}
override init() {
super.init(nibName: "ConnexionViewController", bundle: nil)
}
override init(nibName nibNameOrNil: String!, bundle nibBundleOrNil: NSBundle!) {
super.init(nibName: nibNameOrNil, bundle: nibBundleOrNil)
}
override func viewDidLoad() {
super.viewDidLoad()
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}
xib文件的名称与提供给初始化程序的字符串匹配,xib被添加到实际目标的构建阶段。
答案 0 :(得分:2)
ViewController * pvc = [[ViewController alloc]initWithNibName:NSStringFromClass([ViewController class]) bundle:nil];
我正在以这种方式加载nib以避免字符串。
这反过来又开始将nib名称返回为myproject.ViewController
,以便为现有的混合和匹配objC项目添加快速兼容性。
要对此进行排序,请使用以下类型的代码或使用字符串processig将字符串裁剪到.
ViewController * pvc = [[ViewController alloc]initWithNibName:@"ViewController" bundle:nil];
希望这有助于将来。
答案 1 :(得分:1)
当推送新控制器时,似乎没有完全初始化导航控制器。我改变了呼叫的位置,现在工作正常。