我在故事板中有两个viewControllers,一个ViewController(根)和一个TableViewController,通过一个push segue链接。
TableViewController作为应用程序的设置页,并将UIControlsUISegmentedControl等多个UISwitch放在其中。这些UIControls通过TableViewController链接到IBOutlets

@IBOutlet weak var mySegmentedControl: UISegmentedControl!
@IBOutlet weak var mySwitch: UISwitch!

但是,当我在UIControls中通过以下方式调用这些ViewController时:
let tableView: TableViewController = TableViewController.init(nibName: nil, bundle: nil)

if tableView.mySwitch.isOn {
//perform actions
}

在if语句处弹出错误:
致命错误:在展开可选值时意外找到nil
我想是因为在调用TableViewControllerUIControls没有加载,所以我尝试先调用tableView的viewDidLoad(),但错误仍然存在。
我该怎么办?谢谢你的建议。

最佳答案

您不直接调用viewDidLoad,这是由UIKit在加载视图后完成的。在需要显示视图时加载视图。
如果之前需要进入出口,可以通过

tableView.loadViewIfNeeded()

但请记住:
也许最好是在相关控制器的viewDidLoad内部,而不是从外部进行出口操作。
不应将控制器变量命名为tableView。该名称建议作为视图而不是控制器。最好叫它tableViewCtrl左右。

08-05 22:17
查看更多