我在故事板中有两个viewControllers
,一个ViewController
(根)和一个TableViewController
,通过一个push segue链接。TableViewController
作为应用程序的设置页,并将UIControls
和UISegmentedControl
等多个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
我想是因为在调用
TableViewController
时UIControls
没有加载,所以我尝试先调用tableView的viewDidLoad()
,但错误仍然存在。我该怎么办?谢谢你的建议。
最佳答案
您不直接调用viewDidLoad
,这是由UIKit在加载视图后完成的。在需要显示视图时加载视图。
如果之前需要进入出口,可以通过
tableView.loadViewIfNeeded()
但请记住:
也许最好是在相关控制器的
viewDidLoad
内部,而不是从外部进行出口操作。不应将控制器变量命名为
tableView
。该名称建议作为视图而不是控制器。最好叫它tableViewCtrl
左右。