首页 > 解决方案 > 如何修复 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 编程真的很陌生,所以我对它的了解仍然有限。如果您需要更多信息,请随时询问,我会提供给您。任何帮助,将不胜感激。谢谢!

标签: iosswiftxib

解决方案


由于您尝试使用该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)

推荐阅读