【问题标题】:Swift init ViewController from Xib file error来自 Xib 文件错误的 Swift init ViewController
【发布时间】:2018-06-15 15:41:15
【问题描述】:

使用Xcode 8.2Swift 2.3

我有一个视图控制器文件 namVcc.swift 和 namVccUI.xib

我正在尝试从 xib 文件初始化视图控制器但出现错误

|*|尝试1:

let namVccVar = UINib(nibName: "namVccUI", bundle:
    nil).instantiateWithOwner(nil, options: nil)[0] as! namVcc

navigationController?.pushViewController(namVccVar, animated: true)

|*|尝试2:

let namVccVar = namVcc(nibName: "namVccUI", bundle: nil)

navigationController?.pushViewController(namVccVar, animated: true)

错误:由于未捕获的异常“NSInternalInconsistencyException”而终止应用程序,原因:“无法在包中加载 NIB:“NSBundle(已加载)”,名称为“namVccUI”

我还检查了 xib 文件的属性 > Target Membership 并已检查。

还有什么问题?

【问题讨论】:

  • 第一个看起来不错。您是否 100% 确定 .xib 被命名为“namVccUI”?它是否与您尝试初始化它的 viewController 在同一个包中?
  • 是的 100 % 确定名称和相同的捆绑包

标签: ios swift uiviewcontroller xib nib


【解决方案1】:

当我尝试进行设置时,我遇到了一个类似但措辞略有不同的错误。我明白了

由于未捕获的异常而终止应用 'NSInternalInconsistencyException',原因:'-[UIViewController _loadViewFromNibNamed:bundle:] 加载了“namVccUI”笔尖,但未设置视图出口。'

当我使用您在 Try 2 中的代码和一个新的、干净的 .xib 文件创建一个空项目时。我必须将 .xib 文件中 UIView 的引用出口显式设置为文件所有者,并且我必须确保将 .xib 中文件所有者的自定义类设置为 namVcc。我永远无法让Try 1 工作。

【讨论】:

  • 在 .xib 中设置文件所有者的自定义类被设置为 namVcc 帮助我
  • 你是如何将 .xib 文件中 UIView 的引用 Outlet 显式设置为 File's Owner 的?
  • 画小线。与设置任何引用插座相同
猜你喜欢
  • 2015-05-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-08-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多