如何修复 IBOutlet 配置上的 nil 错误以及 UI 在调用 View Controller 时不显示?

How to fix nil error on IBOutlet configuration and UI not showing when View Controller is called?

我在尝试以编程方式配置 IBOutlets 时遇到错误。每当我尝试设置我的 UI 时,我都会收到此错误:

Fatal error: Unexpectedly found nil while implicitly unwrapping an Optional value

但是当我注释代码(setupKategori() 函数)时,我的 UI 变得像这样透明(你可以看到只有导航栏是可见的,其中所有项目都在XIB 文件应该是可见的):

这是我的代码:

设置UI功能

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() 方法实例化您的视图控制器(该方法又使用 nil 参数调用 init(nibName:bundle:)),那么如果您希望视图控制器从xib 文件,您的 xib 文件的文件名必须与视图控制器的 class 名称相同。

因此,在您的情况下,它应该是:"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)