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

时间:2014-08-11 21:23:15

标签: ios swift viewcontroller nib

我正在尝试使用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被添加到实际目标的构建阶段。

2 个答案:

答案 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)

当推送新控制器时,似乎没有完全初始化导航控制器。我改变了呼叫的位置,现在工作正常。