无法在包中加载 Nib - 错误的 nibname 错误

Posted

技术标签:

【中文标题】无法在包中加载 Nib - 错误的 nibname 错误【英文标题】:Could not load Nib in bundle - Wrong nibname in error 【发布时间】:2014-08-11 21:23:14 【问题描述】:

我正在尝试推送使用 xib 文件初始化的 ViewController 的视图。为此,我调用了我的控制器的初始化程序,它称自己为initwithnibname:bundle: 以加载正确的 xib 文件。问题是我收到以下错误

由于未捕获的异常“NSInternalInconsistencyException”而终止应用程序,原因:“无法在包中加载 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 被添加到实际目标的构建阶段。

【问题讨论】:

【参考方案1】:
ViewController * pvc = [[ViewController alloc]initWithNibName:NSStringFromClass([ViewController class]) bundle:nil];

我以这种方式加载笔尖以避免字符串。 这反过来又开始返回 nib 名称为 myproject.ViewController,以便为现有的 objC 项目添加快速兼容性以进行混合和匹配。

要对此进行排序,请使用以下代码或执行字符串处理以裁剪字符串直到.

ViewController * pvc = [[ViewController alloc]initWithNibName:@"ViewController" bundle:nil];

希望这对将来的人有所帮助。

【讨论】:

【参考方案2】:

推送新控制器时,导航控制器似乎没有完全初始化。我更改了通话位置,现在可以正常使用了。

【讨论】:

补充一点:如果您在框架内初始化 nib,则需要使用有效的包(即 ConnexionViewController.self)而不是 nil。

以上是关于无法在包中加载 Nib - 错误的 nibname 错误的主要内容,如果未能解决你的问题,请参考以下文章

MonoTouch - 无法在包中加载 NIB:“NSBundle”

自定义单元格导致“NSInternalInconsistencyException”,原因:“无法在包中加载 NIB:

设置可重用标头时出错:'无法在包中加载 NIB

无法在包中加载 NIB:NSBundle

NSInternalInconsistencyException 无法在包中加载 nib

iOS - 无法在包中加载 NIB