ios - 如何修复 IBOutlet 配置上的 nil 错误和调用 View Controller 时不显示 UI?
问题描述
当我尝试以编程方式配置我的 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 编程真的很陌生,所以我对它的了解仍然有限。如果您需要更多信息,请随时询问,我会提供给您。任何帮助,将不胜感激。谢谢!
解决方案
由于您尝试使用该init()
方法实例化您的视图控制器(该方法又init(nibName:bundle:)
使用 nil 参数调用),那么如果您希望从 xib 文件加载您的视图控制器,您的 xib 文件的文件名必须与您的视图控制器的文件名相同班级名称。
因此,在您的情况下,它应该是:“FilterPWVC.xib”,而不是“FilterPWView.xib”。
init()
或者,您也可以直接通过 using 指定 nib 名称,而不是重命名 xib 和 using init(nibName:bundle:)
,如下所示:
// 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)
推荐阅读
- python - Python KivyMD - 从一个屏幕输入,在另一个屏幕显示输出
- node.js - 类型错误:运行 npx 时无法读取未定义的属性“版本”
- postgresql - 通过组合的多列强制数据的独特性 - PostgreSQL
- python - 使用 python 3.9 导入 matplotlib 时出现问题:ImportError: DLL load failed while importing _path:
- python - 使用 XLWings 将抓取的电子邮件文本导出到 Excel
- java - Spring Boot:如何检索通过 Exchange Http Get 方法发送的请求对象?
- sql-server - SQL Server全文搜索包含关键字有时有效但有时不适用于同一查询
- java - 您如何处理微服务和 REST API 中的主体?
- javascript - 在 HTML 表中获取整个选定的列值
- paserver - PAServer 不工作