我正在尝试推送一个用 xib 文件初始化的 ViewController View 。为此,我调用了我的 Controller 的初始化程序,该 Controller 自称为 initwithnibname:bundle:
以加载正确的 xib 文件。问题是我收到以下错误
Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Could not load NIB in bundle: [...] with name 'BYZ-38-t0r-view-x4c-fw-L1g'
错误中的 nib 名称与初始化程序调用中提供的 nib 名称不匹配。
这是我的代码:
ViewController声明/初始化
let connexionViewController = ConnexionViewController()
self.view.addSubview(connexionViewController.view) // Exception thrown on this line
View Controller 代码
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 被添加到实际目标的构建阶段。
最佳答案
ViewController * pvc = [[ViewController alloc]initWithNibName:NSStringFromClass([ViewController class]) bundle:nil];
我以这种方式加载 Nib 以避免出现字符串。
这反过来又开始将 nib 名称返回为 myproject.ViewController
,以快速兼容现有的 objC 项目以进行混合和匹配。
要对此进行排序,请使用以下类型的代码或进行字符串处理以裁剪字符串直到 。
ViewController * pvc = [[ViewController alloc]initWithNibName:@"ViewController" bundle:nil];
希望这对以后的人有帮助。
关于ios - 无法在 bundle 中加载 Nib - 错误的 nibname,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25252649/