关于ios:无法在捆绑包中加载Nib-错误的nibname错误

Could not load Nib in bundle - Wrong nibname in error

我正在尝试推送使用xib文件初始化的ViewController的视图。为此,我正在调用控制器的初始化程序,该控制器将自己称为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'

错误中的笔尖名称与初始化调用中提供的笔尖名称不匹配。

这是我的代码:

ViewController声明/初始化

1
2
3
    let connexionViewController = ConnexionViewController()

    self.view.addSubview(connexionViewController.view) // Exception thrown on this line

ViewController代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
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];

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

要对此进行排序,请使用以下类型的代码或执行字符串processig来裁剪字符串,直到.

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

希望这对以后的人有帮助。


当按下新控制器时,导航控制器似乎未完全初始化。我更改了通话的位置,现在可以正常使用了。