如何修复 IBOutlet 配置上的 nil 错误和调用 View Controller 时不显示 UI?
Posted
技术标签:
【中文标题】如何修复 IBOutlet 配置上的 nil 错误和调用 View Controller 时不显示 UI?【英文标题】:How to fix nil error on IBOutlet configuration and UI not showing when View Controller is called? 【发布时间】:2020-04-02 06:21:47 【问题描述】:我在尝试以编程方式配置我的 IBOutlets 时遇到错误。每当我尝试设置我的 UI 时,我都会收到此错误:
致命错误:在隐式展开可选值时意外发现 nil
但是当我注释代码(setupKategori()
函数)时,我的 UI 变得像这样透明(您可以看到只有导航栏可见,XIB 文件中的所有项目都应该可见) :
这是我的代码:
设置界面功能
func setupKategori() // the function that throws the error whenever I call it in viewDidLoad()
kategoriLabel.font = .boldTitilliumWeb(ofSize: 18)
kategoriLabel.textColor = .init(hex: "#333333")
kategoriLabel.sizeToFit()
kategoriDetailLabel.font = .boldTitilliumWeb(ofSize: 18)
kategoriDetailLabel.textColor = .init(hex: "#222222")
kategoriDetailLabel.sizeToFit()
showKategoriButton.addTarget(self, action: #selector(showKategoriAction(_:)), for: .touchUpInside)
编辑:调用视图控制器
func routeToFilter()
//Analytics.logEvent("pw_list_filter", parameters: nil)
let destinationVC = FilterPWVC()
let nav = UINavigationController(rootViewController: destinationVC)
present(nav, animated: true, completion: nil)
对于一些信息,我已经从 XIB 文件连接了 IBOutlets。而且我对 ios 编程真的很陌生,所以我对它的了解仍然有限。如果您需要更多信息,请随时询问,我会提供给您。任何帮助,将不胜感激。谢谢!
【问题讨论】:
您能否编辑您的问题以显示您实例化此视图控制器的代码? @TylerTheCompiler 完成 谢谢。你说你正在使用一个 xib 文件——文件的名称是什么?是FilterPWVC.xib
,还是别的什么?如果它与您的视图控制器的类名不完全匹配,那么您需要在使用 FilterPWVC(nibName:bundle:)
初始化视图控制器时指定 nib 名称(请参阅文档 here)。
@TylerTheCompiler 我的 xib 文件名为 FilterPWView.xib
我相信。谢谢你的帮助!我会查的:)
没有问题!请编辑您的问题以包含您的 xib 文件的名称,以便该信息不会隐藏在此处的 cmets 中。谢谢!
【参考方案1】:
由于您尝试使用 init()
方法(该方法又使用 nil 参数调用 init(nibName:bundle:)
)来实例化您的视图控制器,那么如果您希望从 xib 文件中加载您的视图控制器,那么您的 xib 文件的文件名必须与视图控制器的类名相同。
因此,在您的情况下,它应该是:“FilterPWVC.xib”,而不是“FilterPWView.xib”。
或者,除了重命名 xib 并使用 init()
,您还可以直接使用 init(nibName:bundle:)
指定 nib 名称,如下所示:
// I'm assuming the xib is in the main bundle, so I've passed `nil`
// in for the bundle here
let destinationVC = FilterPWVC(nibName: "FilterPWView", bundle: nil)
【讨论】:
以上是关于如何修复 IBOutlet 配置上的 nil 错误和调用 View Controller 时不显示 UI?的主要内容,如果未能解决你的问题,请参考以下文章
Swift - 带有 xib 文件的自定义视图,IBOutlet 为 nil
如何修复:“致命错误:在展开可选值 (lldb) 时意外发现 nil”